2014-03-25 56 views
0
usercollection.find({ 
     "device_info.location" : 
      $geoWithin : { $centerSphere :[[_latitude, _longitude] , 100/3959]}}}, 
      function (err, result) { 
       if (err) callback(err) else callback(null, result) 
      }); 

正如你可以看到它是获取满足的位置条件的文件,一个简单的查询Node.js的MongoDB的地理空间查询,如果我改变了这个工作完全正常在这种情况下,但是findOne它只是返回{}。从终端执行时,相同的查询完美无缺。有两个记录在此范围内,并显示在终端上。与find()问题

是否有一些具体的原因,为什么它与find()这样的行为?

回答

2

find将回调的结果作为Cursor提供,而不是数组。如果你想要一个数组,你需要链接一个电话toArray

usercollection.find({ ...existing query... }).toArray(callback); 
+0

我没有意识到它是一个光标。谢谢您的帮助。 – insanoid

+0

@insanoid我的荣幸。文档在这个相当重要的细节上令人惊讶地模糊。 – JohnnyHK