MongoDB体系结构:ObjectID VS ISODate

时间:2018-07-16 10:15:42

标签: mongodb database-design

考虑以下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)或对其进行组合(_iddeletedAt之间进行选择>

db.myCollection.find({ 
  deletedAt: { $exists: false }, 
  _id: { $gt: ObjectId('somepastobjectid') } 
})

请注意,默认情况下_id已建立索引,我只需要检查deletedAt是否存在(该值会偶尔使用)

谢谢您的回答

0 个答案:

没有答案