Mongodb 如何计算按嵌套数组分组的文档数?
我有一些文件,如:Mongodb 如何计算按嵌套数组分组的文档数?,mongodb,Mongodb,我有一些文件,如: { "product" : [{ "name" : "apple", "seller" : [ { "name" : "Alice", "gender" : 1 },
{
"product" : [{
"name" : "apple",
"seller" : [
{
"name" : "Alice",
"gender" : 1
},
{
"name" : "Bob",
"gender" : 0
}
]
}, {
"name" : "anotherApple",
"seller" : [
{
"name" : "Bob",
"gender" : 0
}
]
}],
"date" : "someDay"
},
{
"product" : [{
"name" : "apple",
"seller" : [
{
"name" : "Alice",
"gender" : 1
},
{
"name" : "CName",
"gender" : 0
}
]
}],
"date" : "someDay"
}
我想数一数一个卖家的账单,在这种情况下,应该是:
{
"Alice" : 2,
"Bob" : 1,
"CName" : 1
}
我尝试过一些方法,比如在
product
中放松seller
,但都不起作用。我如何才能做到这一点?我使用了addToSet
来创建ID列表。
并在项目中使用$size
计算它们
db.collection.aggregate({
"$unwind": "$product"
},
{
"$unwind": "$product.seller"
},
{
$group: {
_id: "$product.seller.name",
list_ids: {
"$addToSet": "$_id"
}
}
},
{
$project: {
"_id": 1,
"size": {
$size: "$list_ids"
}
}
})
巫婆给了我
[
{
"_id": "CName",
"size": 1
},
{
"_id": "Alice",
"size": 2
},
{
"_id": "Bob",
"size": 1
}
]
试试看我使用了
addToSet
来创建ID列表。
并在项目中使用$size
计算它们
db.collection.aggregate({
"$unwind": "$product"
},
{
"$unwind": "$product.seller"
},
{
$group: {
_id: "$product.seller.name",
list_ids: {
"$addToSet": "$_id"
}
}
},
{
$project: {
"_id": 1,
"size": {
$size: "$list_ids"
}
}
})
巫婆给了我
[
{
"_id": "CName",
"size": 1
},
{
"_id": "Alice",
"size": 2
},
{
"_id": "Bob",
"size": 1
}
]
试试看我不明白,Bob出现了两次,为什么不把它算作2呢?因为结果应该是文档数,而2是产品数@Omar AbbasI不明白,Bob发生了两次,为什么不把它算作2呢?因为结果应该是文档数,而2是产品数@Omar AbbasWell,我以前也试过同样的代码。我想计算文档的数量,但是你代码的结果就是产品的数量。哦,我明白了。我没有正确理解你想要实现的目标。我已经更新了我的答案。嗯,我以前也试过同样的代码。我想计算文档的数量,但是你代码的结果就是产品的数量。哦,我明白了。我没有正确理解你想要实现的目标。我已经更新了我的答案