我有一个mongo查询,可以在我的生产服务器上正常运行。但它不会在我的开发服务器上返回结果。我在开发服务器上的数据库是实时数据库的副本。
产品 - AWS:
mongo v3.0.7
Mongo Query(使用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查询在两台服务器上都可以正常工作。
答案 0 :(得分:0)
答案 1 :(得分:0)
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,
}}])