获取总计数的相关问题已在下面解答
Count and Aggregate in MongoDB
要执行此操作的查询是
db.sg_searchaudit.aggregate([
{"$unwind": "$log" },
{"$match": {"log.ts": {"$gte": new Date("2014-09-01"), "$lte": new Date("2014-11-04")}}},
{"$group": {"_id": "$_id","count": { "$sum": 1 }}},
{"$sort": {"count":1}},
{"$limit": 50}])
当我检查上述查询中的单个关键字时: -
db.sg_searchaudit.aggregate([
{"$match":{"_id": "mongo" ,"log.ts": {"$gte": new Date("2014-09-01T00:00:00.00Z"), "$lte": new Date("2014-11-04T00:00:00.00Z")}}},
{"$unwind": "$log" },
{"$match": {"log.ts": {"$gte": new Date("2014-09-01T00:00:00.00Z"), "$lte": new Date("2014-11-04T00:00:00.00Z")}}},
{"$group": {"_id": "$_id","count": { "$sum": 1 }}},
{"$sort": {"count":-1}},
{"$limit": 50}])
Tha是我知道它实际上是为每个日期聚合而不是在时间戳上聚合的。
因此,对于以下数据,上面的“mongo”查询会返回 2 而不是 4 。
{
"_id" : "mongo",
"log" : [
{
"ts" : ISODate("2011-02-10T01:20:49Z"),
"visitorId" : "25850661"
},
{
"ts" : ISODate("2014-11-01T14:35:05Z"),
"visitorId" : NumberLong(278571823)
},
{
"ts" : ISODate("2014-11-01T14:37:56Z"),
"visitorId" : NumberLong(0)
},
{
"ts" : ISODate("2014-11-04T06:23:48Z"),
"visitorId" : NumberLong(225200092)
},
{
"ts" : ISODate("2014-11-04T06:25:44Z"),
"visitorId" : NumberLong(225200092)
}
],
"uts" : ISODate("2014-11-04T06:25:43.740Z")
}
有什么建议吗?