mongodb如何在_ids上应用比较运算符和排序?是否通过_id的时间戳部分执行此操作?另外,如果在客户端或服务器上生成了objectId,它会有所不同吗?
如果是这样,这个字段的分页是否可靠?例如_id: { $gte: last_idOnPage }
答案 0 :(得分:1)
时间戳是BSON::ObjectId
值的第一部分。所以基本上是的,它首先按时间戳排序,然后按其他部分排序。
答案 1 :(得分:1)
查看有关ObjectId()的文档,您可以看到_id是一个十六进制字符串,表示12字节数字,包括:
因此,部分是正确的:它也使用时间戳对值进行排序。但也使用其他部分。因为这个字符串代表一个数字,所以mongo只是比较数字以找出哪一个更大。
关于你的第二个问题(由应用层或数据库生成的_id是否有所不同):它没有任何区别。 Mongo仍只比较数字。