geoNear不能在Dev Server上工作


geoNear does not work on Dev Server

我有一个mongo查询,它在我的生产服务器上运行良好。但它不会在我的开发服务器上返回结果。我在开发服务器上的数据库是实时数据库的副本。

Prod - AWS:
蒙戈v3.0.7

Dev - Digital Ocean
蒙戈v3.0.9

Mongo查询(使用RoboMongo运行)-坐标屏蔽匿名;)

db.getCollection('$cmd').findOne({
  "geoNear": "ProviderData",
  "near": [
    XX.1325611,
    XX.1357446
  ],
  "spherical": true,
  "distanceMultiplier": 6378137,
  "query": {
    "BusinessType": "557ff3f98b424a1009776ba5",
    "Status": "1"
  }
})

在搜索中应该返回的文档看起来像这样(删除不相关的字段):

{
   "_id" : ObjectId("566xxxxxxxxxxxxxxxxxxdb0"),
   "ProviderName" : "Test Fitness Business",
   "BusinessType" : "557ff3f98b424a1009776ba5",
   "Location" : {
      "Longitude" : XX.135745,
      "Latitude" : XX.132561
   },
   "ImageFlag" : "1",
   "Status" : "1",
   "OrderEmail" : "tests@test3.com",
   "Radius" : "12",
   "ParentCompanyName" : "Test Fitness Business",
}

我的Live服务器返回上述文档和另外两个文档。在Dev服务器上,我只得到

{
   "ok" : 0,
   "errmsg" : "no geo indices for geoNear"
}

我做错了什么?

编辑:其他简单的CRUD查询在两个服务器上都可以正常工作。

如果要执行$geoNear,则必须使用地理索引:2D或2DSphere。因此,只需将位置字段索引从生产服务器复制到开发服务器。

Geonear是一个聚合管道阶段。你应该这样做。

db.getCollection('trips').aggregate([{
  "$geoNear": {
  "near": {"type":"Point","coordinates":[
    -120.28923776, 
            38.86485915
  ]},
    "distanceMultiplier": 6378137,
"distanceField": "dist.calculated",
  "key":"start",
    "maxDistance": 200,
  "spherical": true,
  
}}])