Mongodb 如何获取相邻记录的记录

Mongodb 如何获取相邻记录的记录,mongodb,Mongodb,例如,在创建记录时间字段之前或之后获取post 尝试使用以下语句获取文章 # Created is the time of the creation of the current article # Before a prev_post = db.Post.find ({'created': {'$ lt': created}}, sort = [('created', -1)], limit = 1) # After a next_post = db.Post.find ({'created'

例如,在创建记录时间字段之前或之后获取post

尝试使用以下语句获取文章

# Created is the time of the creation of the current article
# Before a
prev_post = db.Post.find ({'created': {'$ lt': created}}, sort = [('created', -1)], limit = 1)
# After a
next_post = db.Post.find ({'created': {'$ gt': created}}, sort = [('created', 1)], limit = 1)
结果变得不连续,有时会跳过几条记录。我不知道为什么,也许我误解了这个发现?
请帮助。

这看起来确实是一种奇怪的行为,但MongoDB不保证存储记录的顺序,除非您查询数组(其中记录按插入顺序保存)。我相信MongoDB所做的——它到达第一个与您的查询匹配的文档并返回它。
底线:如果逻辑需要相邻记录,则使用数组

我想这是你创造的。时间类型有问题,如果记录时间相同,系统不知道选择哪一个。您可以使用\u id,试一试。

您的意思是,“中间会跳过一些好的记录”?您能否提供一个记录示例,以及哪些记录最终会被跳过?另外,您是否在
创建的
字段上有索引?对不起,我的意思是结果有时会跳过几个中间记录,它不完全是相邻记录。您可以发布文档的示例吗?正如其中一个答案中提到的,问题可能只是相同的创建日期。我想你可能混淆了。要排序的字段应编入索引,并且是查询中的最后一个字段。这确实提供了排序结果。可能的例外情况是匹配相同排序值的结果的排序(例如,如果您仅将
创建的
作为排序值,则创建的
时间相同)。。但是如果顺序很重要,你需要使用一个更合适的排序键。我确实发现了时间的问题,有些记录有相同的创建时间。谢谢