Mongo and find always limited to 100 with geo data

限于喜欢 提交于 2020-02-16 05:18:05

问题


While trying to experiment with mongo performance I found strange behaviour of my mongo db.

First of all i filled it with the following query:

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]} )}

next:

db.location.ensureIndex( {position: "2d"} )

Then i execute query:

db.location.find( {position: { $near: [1,1], $maxDistance: 1/111.12  } } )

Whatever i try to do i get always size or count result 100.

I noticed in documentation that defualt limit is 100. I tried also to override it with bigger than 100 values. Unfortunately I failed.

Have you ever encountered such a case?


回答1:


To get all document query like

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

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



回答2:


From oficial documentation:

The $near operator requires a geospatial index: a 2dsphere index for GeoJSON points; a 2d index for legacy coordinate pairs. By default, queries that use a 2d index return a limit of 100 documents; however you may use limit() to change the number of results.

And also look at 'Note' in the and of this tutorial page.

Update:
As Sumeet wrote in comment to his answer - it is open issue.
For be sure, that your query return correct count, that you specifying in limit method, you could try to use .limit(<some_number>).explain().n with your cursor, if you working in the shell.




回答3:


Just tried the same scenario on my MongoDB and it works fine. I gave limit of 145 and it gave me 145 records. However as mentioned in the documentation it give me 100 records if I do not specify any limit.

db.location.find( {position: { $near: [1,1], $maxDistance: 1  } } ).limit(145)

I tried using above statement. Please note that I changed the value of $maxDistance so that I get lot of records.



来源:https://stackoverflow.com/questions/22207223/mongo-and-find-always-limited-to-100-with-geo-data

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!