我们为什么在created_at
字段的时候timestamp
可以在前4个字节中找到ObjectId
ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()
在某些情况下,这样做是有意义的:
当您需要更高的精度时-ObjectId.getTimestamp()
最多可以精确到秒,而Date
字段则可以存储毫秒。在mongo
shell中进行比较:new Date()
yields ISODate("2016-01-03T21:21:38.032Z")
,而ObjectId().getTimestamp()
yields ISODate("2016-01-03T21:21:50Z")
。
当您完全不使用ObjectId
时-通常认为应该使用填充_id
字段,而实际上大多数驱动程序仅使用默认值,而MongoDB本身并不强加它-相反,它是鼓励使用文档中存在的任何“自然”唯一ID。在这种情况下,如果需要,您将必须自己存储“创建时间戳记”。ObjectId
ObjectId
可用性-如果您依赖此字段及其中的数据,则至少从设计的角度来看,最好对其进行明确化。不过,这更多是一个品味问题。但是,如注释中所述,如果您还想按“创建时间戳记”进行过滤或排序-为它准备一个专用字段并$gt
直接在其上使用查询运算符(如)会更容易。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句