我需要在单个查询中找到状态为'a'
的计数以及数组'Y'
中元素的总数,其中'X'
和'Y'
是嵌套数组文件。
集合类似于以下内容:
{
X: [
{
Y:[
{
STATUS: 'a'
},
{
STATUS: 'a'
},
{
STATUS: 'b'
}
]
}
]
}
一个mongodb查询,用于查找状态'a'
的计数和数组'Y'
中元素的总数。
必需的结果是'a'
的计数为2
,而'Y'
中元素的总数为3
。
答案 0 :(得分:1)
您可以使用以下汇总
首先使用$map
遍历X
数组,然后使用$filter
删除不匹配的元素。
db.collection.aggregate([
{ "$project": {
"X": {
"$map": {
"input": "$X",
"as": "x",
"in": {
"aCount": {
"$size": {
"$filter": {
"input": "$$x.Y",
"cond": { "$eq": ["$$this.STATUS", "a"] }
}
}
},
"allCount": { "$size": "$$x.Y" }
}
}
}
}}
])
答案 1 :(得分:1)