javascript - 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
在我们正在查看非计算字段的字段上时 - 它工作正常。
解决方案
谢谢大家 - 这是一个真正的超时,而不是我的查询语法问题。我添加了一个索引,一切都很好。
推荐阅读
- c++ - 打印两个数组(字符串)的所有元素的所有组合
- c++ - 使用 istream 计数错误将 double 输入到 int 变量中
- azure - Traefik persistant volume timeouts AKS
- javascript - 网络图 - 有没有办法在点击网络图中隐藏特定节点?
- java - 使用反射检索整数字段值的异常
- javascript - 从 AWS S3 存储桶下载 NodeJS 文件
- python - 将 Kotlin 与 Python 集成
- c++ - c++递归模板解析:优雅地展平向量的向量
- azure-data-factory - 如何配置数据工厂连接到 NSG 后面的 sql server
- javascript - 有没有办法在 Python 中编写类似 lambda 的对象,就像在 JS 中一样