MongoDb查询在列表(非数组)中围绕给定ID分页
我们有几个应用程序,要求如果应用程序向我们发送一个ID(ObjectId),我们应该用给定ID位于“中心”的文档列表进行响应 也许一个例子更容易理解 比如说 在数据库中,我们有MongoDb查询在列表(非数组)中围绕给定ID分页,mongodb,mongodb-query,Mongodb,Mongodb Query,我们有几个应用程序,要求如果应用程序向我们发送一个ID(ObjectId),我们应该用给定ID位于“中心”的文档列表进行响应 也许一个例子更容易理解 比如说 在数据库中,我们有 _id : 1 data : someData1 _id : 2 data : someData2 _id : 3 data : someData3 _id : 4 data : someData4 _id : 5 data : someData5 该应用程序要求_id:3,我们应该提供id 2、3和4 我们正
_id : 1
data : someData1
_id : 2
data : someData2
_id : 3
data : someData3
_id : 4
data : someData4
_id : 5
data : someData5
该应用程序要求_id:3,我们应该提供id 2、3和4
我们正在寻找一种方法,将其放入一个查询中,而不需要我们进行处理
额外问题:
- 数据定期更新
- 实际的查询超出了find({})的范围,并且是有序的 在“发布日期”之前,但这还不够详细。(日期为 上升到每分钟,而不是毫秒或其他)
- 由于数据的性质和在此集合中插入的内容,不可能将位置放在文档本身中
亲切问候是您的
\u id
连续编号的整数,如您的示例中所示,还是您使用自动生成的objectid?Hi Philipp,_id是通常自动生成的objectid,因此它们之间没有任何关联,这有助于排序或定位。我认为您需要使用两个查询—一个是获取比给定_id
的文档大的前k个文档,另一个是获取前k个较小的文档。目前还没有一种方法可以要求以给定文档为中心的已排序文档,我认为在完全随机插入不断发生的一般情况下,任何技巧都不会对您有所帮助(这就是我对您的第三个要点的解释)。这确实是我们目前所处的困境。但我们仍在努力从数据中找到一个可以用于本案例的关键点。但是没有用。因此,不可能提出类似“某个领域比给定领域更大”这样的问题