Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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 Mongo和find的地理数据始终限制在100个以内_Mongodb_Find - Fatal编程技术网

Mongodb Mongo和find的地理数据始终限制在100个以内

Mongodb Mongo和find的地理数据始终限制在100个以内,mongodb,find,Mongodb,Find,在尝试mongo性能时,我发现我的mongo db的行为很奇怪 首先,我填写了以下查询: for (i=0; i < 10000000; i++){db.location.insert( {_id: Math.floor((Math.random()*10000000000)+1), position: [Math.round(Math.random()*10000)/10000, Math.round(Math.random()*10000)/10000]} )} 然后执行查询: db

在尝试mongo性能时,我发现我的mongo db的行为很奇怪

首先,我填写了以下查询:

for (i=0; i < 10000000; i++){db.location.insert( {_id: Math.floor((Math.random()*10000000000)+1), position: [Math.round(Math.random()*10000)/10000, Math.round(Math.random()*10000)/10000]} )}
然后执行查询:

db.location.find( {position: { $near: [1,1], $maxDistance: 1/111.12  } } )
无论我尝试做什么,我总是得到大小或计数结果100

我在文档中注意到,解除限制为100。我还试图用大于100的值覆盖它。不幸的是我失败了

你曾经遇到过这样的情况吗?

来自官方:

$near操作符需要一个地理空间索引:用于GeoJSON点的2dsphere索引;传统坐标对的二维索引。默认情况下,使用2d索引的查询最多返回100个文档但是您可以使用更改结果数

另外,请参阅本教程页和中的“注意事项”

更新:
正如Sumeet在对其答案的评论中所写,这是一个悬而未决的问题。

为了确保您的查询返回正确的计数,您可以在limit方法中指定,如果您在shell中工作,您可以尝试使用光标
.limit().explain().n

来获得所有文档查询

cordinate = [1,1];
maxDistance = 1/111.12 ;

db.location.find({"position" : {"$within" : 
                                      {"$center" : [cordinate , maxDistance ]}
                                }
                  });

在我的MongoDB上尝试了相同的场景,效果很好。我给出了145条限制,它给了我145条记录。然而,正如文档中提到的,如果我没有指定任何限制,它会给我100条记录

db.location.find( {position: { $near: [1,1], $maxDistance: 1  } } ).limit(145)
我试着使用上述语句。
请注意,我更改了$maxDistance的值,以便获得大量记录。

这正是我之前发现的。我限制并重新检查了它。Find返回更多值,但count或size仍然显示100
count
have parameter
applySkipLimit
,您可以为应用跳过和限制影响()编写
.count(true)
。但是我现在已经用
$near
试过了,它不起作用。现在我正在研究发生了什么,你是对的。我没数/没量就计算出来了。但是count/size仍然显示100作为找到的文档的总和:db.location.find({position:{$near:[1,1],$maxDistance:1}}).limit(145.count(),如果我不想要任何限制怎么办?限制(0)不工作限制(0)等同于不指定限制本身。@Lormitto:是的,似乎count()显示了错误的结果。但是,如果您尝试在此查询上调用explain()函数,您可以看到当使用limit(145)时,它返回145个文档。您的解决方案似乎有效。非常感谢。你能告诉我这和以前的方法有什么不同吗?“内部”会带来重要的区别吗?
db.location.find( {position: { $near: [1,1], $maxDistance: 1  } } ).limit(145)