我有一个 mongodb 集合,其中的项目有 create_time 和 delete_time field.I 想要聚合
I got a mongodb collection which items has create_time and delete_time field.I want a Aggregation
我想要聚合。(或者聚合可以解决我的问题吗?)
例如:
有一个时间戳,如果一个项目create_time小于时间戳而delete_time大于时间戳,则计数为1,循环所有项目,我可以在时间戳中得到计数, 一系列计数是我需要的。
这个过程在我的应用程序中太慢了。
mongodb 聚合可以帮助我吗?谢谢
如果我没理解错的话,这就是查询
db.collection.aggregate([{ $project:{cmp:{$and: [{$lt:["$create_time",ISODate("2016-04-24T13:10:09.518Z")]}, {$gt:["$delete_time",ISODate("2016-04-25T13:10:09.518Z")]}] } } },{$match:{cmp:true}},{$group:{_id:"$cmp",count:{$sum:1}}}])
这个基本上会给出 { "_id" : true, "count" : 2 }
的输出。
其中 count 是满足您指定条件的文档数。将 ISODate("xxxx") 替换为您的 ISO 日期。
如果您还想要不满足查询的文档数量,请删除管道中的匹配对象。
我想要聚合。(或者聚合可以解决我的问题吗?)
例如:
有一个时间戳,如果一个项目create_time小于时间戳而delete_time大于时间戳,则计数为1,循环所有项目,我可以在时间戳中得到计数, 一系列计数是我需要的。
这个过程在我的应用程序中太慢了。
mongodb 聚合可以帮助我吗?谢谢
如果我没理解错的话,这就是查询
db.collection.aggregate([{ $project:{cmp:{$and: [{$lt:["$create_time",ISODate("2016-04-24T13:10:09.518Z")]}, {$gt:["$delete_time",ISODate("2016-04-25T13:10:09.518Z")]}] } } },{$match:{cmp:true}},{$group:{_id:"$cmp",count:{$sum:1}}}])
这个基本上会给出 { "_id" : true, "count" : 2 }
的输出。
其中 count 是满足您指定条件的文档数。将 ISODate("xxxx") 替换为您的 ISO 日期。
如果您还想要不满足查询的文档数量,请删除管道中的匹配对象。