在 MongoDb 中查找下一个文档

2023-11-22

如果这是我的集合结构:

{ _id: ObjectId("4fdbaf608b446b0477000142"), name: "product 1" }
{ _id: ObjectId("4fdbaf608b446b0477000143"), name: "product 2" }
{ _id: ObjectId("4fdbaf608b446b0477000144"), name: "product 3" }

我查询产品 1,有没有办法查询下一个文档,在本例中是“产品 2”?


最好添加明确的sort()如果您想要可预测的结果顺序。

假设您查询的顺序是“插入顺序”,并且您使用的是MongoDB默认生成的ObjectId,那么您可以根据ObjectId进行查询:

// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)

请注意,此示例之所以有效,是因为:

  • ObjectId 的前四个字节是根据 unix 样式时间戳计算的(请参阅:对象 ID 规范)
  • 查询_id单独使用默认值_id索引(按 id 排序)来查找匹配项

实际上,这种隐式排序与:

db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);

如果您向查询添加了更多条件来限定如何查找“下一个”产品(例如,category),查询可以使用不同的索引,并且顺序可能与您期望的不同。

您可以使用以下命令检查索引使用情况解释().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MongoDb 中查找下一个文档 的相关文章

随机推荐