如何计算mongoDB中嵌入的数组对象元素
我有订单收集,其中文档采用这种格式。我想得到有可退货标志的产品总数。e、 g:对于上述订单,计数应为2。我对MongoDB非常陌生,我想知道如何编写查询以找到答案,我尝试了一些方法,但没有帮助: 这就是我尝试过但没有成功的地方:如何计算mongoDB中嵌入的数组对象元素,mongodb,mongodb-query,nosql,aggregation-framework,Mongodb,Mongodb Query,Nosql,Aggregation Framework,我有订单收集,其中文档采用这种格式。我想得到有可退货标志的产品总数。e、 g:对于上述订单,计数应为2。我对MongoDB非常陌生,我想知道如何编写查询以找到答案,我尝试了一些方法,但没有帮助: 这就是我尝试过但没有成功的地方: { "orderNo": "123", "bags": [{ "type": "small", "
{
"orderNo": "123",
"bags": [{
"type": "small",
"products": [{
"id": "1",
"name": "ABC",
"returnable": true
}, {
"id": "2",
"name": "XYZ"
}
]
},{
"type": "big",
"products": [{
"id": "3",
"name": "PQR",
"returnable": true
}, {
"id": "4",
"name": "UVW"
}
]
}
]
}
对于内部数组,您可以使用它来检查returnable标志并获取此类项的数量。对于外部数组,可以利用它对内部数组的值求和:
db.orders.aggregate([
{ "$unwind": "$bags" },
{ "$unwind": "$bags.products" },
{ "$unwind": "$bags.products.returnable" },
{ "$group": {
"_id": "$bags.products.returnable",
"count": { "$sum": 1 }
}}
])
对于内部数组,您可以使用它来检查returnable标志并获取此类项的数量。对于外部数组,可以利用它对内部数组的值求和:
db.orders.aggregate([
{ "$unwind": "$bags" },
{ "$unwind": "$bags.products" },
{ "$unwind": "$bags.products.returnable" },
{ "$group": {
"_id": "$bags.products.returnable",
"count": { "$sum": 1 }
}}
])
您的预期结果是什么?您的预期结果是什么?非常感谢,一个小问题:如果我希望计数基于“可返回”属性而不是其真/假值,该怎么办。@Souma您可以这样尝试:非常感谢,1个小问题:如果我希望计数基于“returnable”属性,而不是其真/假值,该怎么办。@Souma您可以这样尝试: