需要一些关于我的 mongodb 聚合查询的帮助 [重复]

Posted

技术标签:

【中文标题】需要一些关于我的 mongodb 聚合查询的帮助 [重复]【英文标题】:Need some help regarding my mongodb aggregate query [duplicate] 【发布时间】:2019-10-17 09:43:18 【问题描述】:

我有以下聚合查询,用于查询大约 9+ 十万条记录:

db.getCollection('Job').aggregate([
  
    "$sort": 
      "lastUpdatedAt": 1
    
  ,
  
    "$match": 
      "$and": [
         "lastUpdatedAt":  "$gte": new Date("2019-04-01")  ,
        
          "$or": [
             "job.scheduledEndTime":  "$lte": new Date("2019-07-15")  ,
             "lastUpdatedAt":  "$lte": new Date("2019-07-15")  
          ]
        ,
         "reduced": null 
      ]
    
  ,
   "$project":  "_id": 1  ,
   "$sort":  "_id": 1  ,
   "$limit": 100 
])

在上面的查询中,我创建了复合索引,每个字段也有一个单独的索引:

 "lastUpdatedAt": -1, "job.scheduledEndTime": -1, "reduced": 1  

这是一个稀疏索引,因为一旦我从上述查询中获得结果并在其中执行一些操作后,我设置的所有文档中都没有缩减字段。

这是 .explain 告诉我的:https://pastebin.com/ERgChr2N

上面的查询大约需要 100 到 130 秒才能返回结果,所以有什么方法可以优化上面的查询。

提前致谢。

【问题讨论】:

【参考方案1】:

大家好,我更改了我的查询以找到一个,我在 1 秒内得到所有结果,这是我的查找查询:

db.getCollection('Job').find( $and: [ 
     lastUpdatedAt: $gte: new Date("2019-04-01") , 
     "$or": [
        "job.scheduledEndTime":"$lte": new Date("2019-07-15"),
        "lastUpdatedAt":"$lte": new Date("2019-07-15")
    ] ,
     reduced: null 
], _id: 1).sort(_id: 1).limit(100)

【讨论】:

以上是关于需要一些关于我的 mongodb 聚合查询的帮助 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 MongoDB 聚合查询这么慢

MongoDB聚合日期查询

从 MongoDB 聚合到 Spring Boot 聚合框架

mongoDB应用篇-mongo聚合查询

Mongodb聚合$lookup $project和$match不起作用[重复]

Mongodb聚合$lookup $project和$match不起作用[重复]