考虑以下MongoDB文档
{
"_id": ObjectId("59f05fd6aa6e2bdef4275ebb"),
"property": "example value",
"updatedAt": ISODate("2018-07-14T01:00:00+01:00"),
"createdAt": ISODate("2018-07-15T01:00:00+01:00"),
"deletedAt": ISODate("2018-07-16T01:00:00+01:00")
}
我的问题是关于MongoDB最佳实践的,尤其是最大限度地减少响应时间和索引成本。
由于创建时间戳记是用_id编码的,因此可以使用比较运算符($gt(e)
,$lt(e)
...)(see this post)进行查询:在直接查询“ _id”属性与结果之间,最有效的方法是什么保持_id为唯一集合的索引,并添加ISODate字段createdAt
并为此字段编制索引?
最后,在知道单个查询最常见的查询将是这样的情况下,如何在对单个属性建立索引(deletedAt
)或对其进行组合(_id
和deletedAt
之间进行选择>
db.myCollection.find({
deletedAt: { $exists: false },
_id: { $gt: ObjectId('somepastobjectid') }
})
请注意,默认情况下_id已建立索引,我只需要检查deletedAt
是否存在(该值会偶尔使用)
谢谢您的回答