Ho un set di oggetti mongoDB altamente nidificato e voglio contare il numero di documenti parziali che corrispondono a una data condizione Modifica: (in ogni documento). Per esempio:Conteggio di aggregazione di oggetti nidificati MongoDB
{"_id":{"chr":"20","pos":"14371","ref":"A","alt":"G"},
"studies":[
{
"study_id":"Study1",
"samples":[
{
"sample_id":"NA00001",
"formatdata":[
{"GT":"1|0","GQ":48,"DP":8,"HQ":[51,51]}
]
},
{
"sample_id":"NA00002",
"formatdata":[
{"GT":"0|0","GQ":48,"DP":8,"HQ":[51,51]}
]
}
]
}
]
}
{"_id":{"chr":"20","pos":"14372","ref":"T","alt":"AA"},
"studies":[
{
"study_id":"Study3",
"samples":[
{
"sample_id":"SAMPLE1",
"formatdata":[
{"GT":"1|0","GQ":48,"DP":8,"HQ":[51,51]}
]
},
{
"sample_id":"SAMPLE2",
"formatdata":[
{"GT":"1|0","GQ":48,"DP":8,"HQ":[51,51]}
]
}
]
}
]
}
{"_id":{"chr":"20","pos":"14373","ref":"C","alt":"A"},
"studies":[
{
"study_id":"Study3",
"samples":[
{
"sample_id":"SAMPLE3",
"formatdata":[
{"GT":"0|0","GQ":48,"DP":8,"HQ":[51,51]}
]
},
{
"sample_id":"SAMPLE7",
"formatdata":[
{"GT":"0|0","GQ":48,"DP":8,"HQ":[51,51]}
]
}
]
}
]
}
Voglio sapere quanti documenti secondari contengono GT: "1 | 0", che in questo caso sarebbe 1 nel primo documento, e due nel secondo, e 0 nel 3 °. Ho provato le funzioni di svolgimento e aggregazione, ma ovviamente non sto facendo qualcosa di corretto. Quando provo a contare i documenti secondari dal campo "GT", Mongo si lamenta:
db.collection.aggregate([{$group: {"$studies.samples.formatdata.GT":1,_id:0}}])
dal nome del mio gruppo non può contenere, ma se li lascio fuori "":
db.collection.aggregate([{$group: {"$GT":1,_id:0}}])
esso si lamenta perché "$ GT non può essere un nome di operatore"
Qualche idea?
Sì, questo funziona, ma in realtà conta tutti i valori nella raccolta, anziché il documento. Quello che sto cercando è l'equivalente del conteggio dei documenti secondari in ogni documento, incluso se ci sono 0. Modificherò il mio post originale per renderlo più chiaro. –
@StevenHart Questo non era chiaro nella tua domanda. Ma si tratta semplicemente di includere l'id del documento nella chiave di raggruppamento. Guarda il cambiamento. –
La seconda partita $ è necessaria dopo il $ unwinds? – TheGaff