Tôi có một tập hợp các đối tượng mong muốn lồng nhau và tôi muốn đếm số lượng các tài liệu phụ phù hợp với một điều kiện nhất định Chỉnh sửa: (trong mỗi tài liệu). Ví dụ:MongoDB tập hợp đối tượng lồng nhau đếm
{"_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]}
]
}
]
}
]
}
Tôi muốn biết có bao nhiêu tài liệu phụ chứa GT: "1 | 0", mà trong trường hợp này sẽ là 1 trong những tài liệu đầu tiên, và hai trong lần thứ hai, và 0 trong 3rd. Tôi đã thử các chức năng thư giãn và tổng hợp nhưng tôi rõ ràng là không làm điều gì đó chính xác. Khi tôi cố gắng đếm các văn bản dưới bởi trường "GT", Mongo phàn nàn:
db.collection.aggregate([{$group: {"$studies.samples.formatdata.GT":1,_id:0}}])
kể từ khi tên nhóm tôi không thể chứa, nhưng nếu tôi rời chúng ra "":
db.collection.aggregate([{$group: {"$GT":1,_id:0}}])
nó than phiền vì "$ GT không thể là tên nhà điều hành"
Bất kỳ ý tưởng nào?
Có, tính năng này hoạt động, nhưng nó thực sự tính tất cả các giá trị trong bộ sưu tập, thay vì tài liệu. Những gì tôi đang tìm kiếm là tương đương với việc đếm các tài liệu phụ trong mỗi tài liệu, bao gồm nếu có 0. Tôi sẽ sửa bài viết gốc của tôi để làm cho điều này rõ ràng hơn. –
@StevenHart Điều đó không rõ ràng trong câu hỏi của bạn. Nhưng đó là một vấn đề đơn giản bao gồm id tài liệu trong khóa nhóm. Xem thay đổi. –
Đây có phải là trận đấu $ thứ hai cần thiết sau khi $ thư giãn không? – TheGaff