【问题标题】:I got a mongodb collection which items has create_time and delete_time field.I want a Aggregation我有一个 mongodb 集合,其中项目具有 create_time 和 delete_time 字段。我想要一个聚合
【发布时间】:2016-04-25 10:36:38
【问题描述】:

我想要一个聚合。(或者聚合能解决我的问题吗?)

例如:

有一个timestamp,如果一个item的create_time小于timestamp,delete_time大于timestamp,则计数为1,循环所有item,我可以得到timestamp中的count,一系列count就是我需要的。

这个过程在我的应用程序中太慢了。

mongodb 聚合可以帮助我吗?谢谢

【问题讨论】:

  • 你能解释一下计数系列是我需要的如果你想要聚合的输出为 {count:xxx,timeStamp:ISODate( xxxxxxxx)}
  • @kryshna 嗨,我不确定,但我可以解释我在我的应用程序上做了什么,我选择最近的 30 天,我计算了我在上面的问题中所说的匹配的 erery 天,然后我得到了30次和30位,我做了一个曲线图,这样我可以看到这些项目增加的趋势,我还需要计算最近的15周,6个月,有帮助吗?
  • @kryshna 是的,{count:xxx,timeStamp:ISODate(xxxxxxxx)} 正是我想要的。

标签: mongodb aggregation-framework mongoengine


【解决方案1】:

如果我理解正确,这就是查询

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 日期。 如果您还想要不满足查询的文档数量,请删除管道中的匹配对象。

【讨论】:

    猜你喜欢
    • 2016-10-22
    • 2019-07-12
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2020-12-08
    相关资源
    最近更新 更多