MongoDb查找中有多个$和$或
我有一个疑问,我搞不懂。该查询不返回任何内容:MongoDb查找中有多个$和$或,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个疑问,我搞不懂。该查询不返回任何内容: const read = await db.collection("action_traces") .find( { $and: [ { $or: [ {"receipt.receiver": "newdexpocket"}, {"act.account": "newdexpocket"} ] },
const read = await db.collection("action_traces")
.find(
{ $and: [
{ $or:
[
{"receipt.receiver": "newdexpocket"},
{"act.account": "newdexpocket"}
]
},
{ $and:
[
{"block_time":{ "$gte": "2018-10-02T00:00:00.000Z" } },
{"block_time":{ "$lt": "2018-10-03T00:00:00.000Z" } }
]
}
]
})
鉴于以下请求返回了我想要的部分结果:
const read = await db.collection("action_traces")
.find(
{ $and: [
{ $or:
[
{"receipt.receiver": "newdexpocket"},
{"act.account": "newdexpocket"}
]
},
{"block_time":{ "$lt": 2018-10-03T00:00:00.000Z } }
]
})
问题很简单,如何删除早于2018-10-02T00:00:00.000Z的文档?在我的第一个请求中,我做错了什么
首先非常感谢,应该暗示批判性之间的和
,下面的查询应该等同于您试图实现的目标(如果我理解正确的话)。请测试一下
db.collection("action_traces")
.find({ $or:[
{"receipt.receiver": "newdexpocket"},
{"act.account": "newdexpocket"}
],
"block_time":{ "$gte": "2018-10-02T00:00:00.000Z" ,"$lt": "2018-10-03T00:00:00.000Z" }
})
谢谢,至少您的查询正在运行,但它似乎在无休止地运行。当我查看日志时,它并不是无穷无尽的,但由于集合非常大(700gb),它似乎正在解析整个集合,因此可能它只考虑查询的$gte
部分?仅供参考,我还在控制台中打印了查询,以确保这不是格式问题,但字符串是正确的。第一个查询(当它只是$lt
时)大约在10秒钟内运行,而同时使用$gte
和$lt
的查询在几分钟后仍在运行(每次我都手动终止它)。有什么想法吗?它实际上在工作,我输入了两个额外的{}
,所以工作不正常,但现在它是;-)问题解决了,谢谢你的回答:p