首页 > 解决方案 > mongo 查询超时,新 $project 字段上的 $match

问题描述

我正在尝试在计算 $project 字段后进行 $match 并且以下查询超时:

db.getCollection('bookings').aggregate([
    {"$match": {
        "location_id": ObjectId("5c123423234234234")
    }
    },
    {"$lookup": {from: 'inspections', localField: "_id", foreignField: "bookingId", as: 'inspection'}},
    {
        "$project": 
            {
                "endDate": 1,
                "startDate": 1,
                "state": 1,
                "inspection": 1,
                "late": 
                    {
                        "$cond": [
                            {
                            "$and": [
                            {
                                "$lte": ["$endDate", new Date()]
                            },
                            {                                                        
                                "$eq": ["$inspection", []]
                            }, {
                                
                           "$in": ["$state", ["returned", "active"]]
                                },
                       
                            ]
                            }
                            
                            , true, false
                         ],
                    }
            }
    },
     {
          "$match": { "late": true }
     }
])

你知道我做错了什么吗?问题在于,"$match": { "late": true }"当我尝试$match在我们正在查看非计算字段的字段上时 - 它工作正常。

标签: javascriptmongodb

解决方案


谢谢大家 - 这是一个真正的超时,而不是我的查询语法问题。我添加了一个索引,一切都很好。


推荐阅读