【发布时间】:2014-11-13 06:20:31
【问题描述】:
如何统计mongo shell聚合方法的结果?
有没有比添加更简单的方法
{$group:{_id:null,count:{$sum:1}}}
到查询?
例如,我有以下架构:
{
"_id" : ObjectId("541b2b6813e401118fcf9ec6"),
"customer" : "Bob",
"items" : [
"pear",
"apple"
]
}
我想计算 Bob 订购了多少个梨(他有多个订单,并且项目可能包含重复项)。我提出了以下查询:
db.orders.aggregate(
[
{
$match: {
"customer": {
$eq: "Bob"
}
}
},
{
"$unwind": "$items"
},
{
$match: {
"items": {
$eq: "pear"
}
}
},
{
$group: {
_id: null,
count: {
$sum: 1
}
}
}
]
)
有回应:
{ "_id" : null, "count" : 1 }
有没有更简单的方法?
【问题讨论】:
-
如果商品不包含重复项,我们可以使用 find 查询,例如: db.orders.find({"customer" : "Bob","items":"pear"}).count( ) 在不使用聚合的情况下获得结果...
-
嗯,是的,这是真的。所以问题是你只是想计算符合你的条件的文档还是你想计算出现重复的那个条件?这是两种形式的本质区别。
-
@NeilLunn 忘记这个例子。我只想统计聚合方法返回的文档。
标签: mongodb mongodb-query