直升机,
我有一个包含大约 20k 个文档的 mongodb 集合。删除的文档也存储在集合中,这意味着它们是“软”删除的。
现在,我想根据“状态”键查询文档。状态可以是“打开”、“关闭”或“已删除”。我需要状态为“已关闭”的记录
我看到满足我标准的文档数量只有 25 个。但是,扫描的文档(应用索引后)为 18k。
因此,我的查询大约需要 2 分钟才能执行,而且很多时候会超时。
我的第一个问题是: 1. 对 20k 文档执行查询是否应该花费这么多时间?20k不是一个很大的数字吗?2. 如果可以的话,有人可以指导我进一步优化查询吗?将已删除的记录推送到单独的存档集合中是我最不想做的事情。
这是我当前的查询:
**
db.collectionname.find({$and: [{ $and: [{ status: {$ne: 'open'} },{ status: {$ne: 'deleted'} }] },
{ 'submittedDate': { $gte: new Date("2019-02-01T00:00:00.000Z"), $lte: new Date("2019-02-02T00:00:00.000Z") } }
] })
**