Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDb查询在列表(非数组)中围绕给定ID分页_Mongodb_Mongodb Query - Fatal编程技术网

MongoDb查询在列表(非数组)中围绕给定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(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

我们正在寻找一种方法,将其放入一个查询中,而不需要我们进行处理

额外问题:

  • 数据定期更新
  • 实际的查询超出了find({})的范围,并且是有序的 在“发布日期”之前,但这还不够详细。(日期为 上升到每分钟,而不是毫秒或其他)
  • 由于数据的性质和在此集合中插入的内容,不可能将位置放在文档本身中
我们也希望在聚合框架中实现这一点,但也无法提出解决方案

也许地图会缩小,但是这个查询会持续进行,所以我认为这不够快

任何想法都是受欢迎的


亲切问候

是您的
\u id
连续编号的整数,如您的示例中所示,还是您使用自动生成的objectid?Hi Philipp,_id是通常自动生成的objectid,因此它们之间没有任何关联,这有助于排序或定位。我认为您需要使用两个查询—一个是获取比给定
_id
的文档大的前k个文档,另一个是获取前k个较小的文档。目前还没有一种方法可以要求以给定文档为中心的已排序文档,我认为在完全随机插入不断发生的一般情况下,任何技巧都不会对您有所帮助(这就是我对您的第三个要点的解释)。这确实是我们目前所处的困境。但我们仍在努力从数据中找到一个可以用于本案例的关键点。但是没有用。因此,不可能提出类似“某个领域比给定领域更大”这样的问题