如何使用带有嵌入式GeoJsonPoint字段的$ geoNear?

时间:2016-09-02 13:57:17

标签: mongodb aggregation-framework geospatial

我有一个包含以下字段的地方的集合:

{
"name":"AAAAA",
.
.
"location" : {
    "loc" : {
        "type" : "Point",
        "coordinates" : [
            25.381911,
            37.109551
        ]
    }
    .
    .
 }
 }

我想在geoNear中使用聚合,但我找不到为该位置设置字段的方法。使用这样的查询:

db.places.aggregate([
{
 $geoNear: {
    near: { type: "Point", coordinates: [ -73.99279 , 40.719296 ] },
    distanceField: "dist",
    maxDistance: 2,
    query: {  
            "categories.categoryList":"Cocktail Bar"
        },
    includeLocs: "location.loc",
    num: 5,
    spherical: true
 }

}]);

我收到此错误:

"errmsg" : "exception: geoNear command failed: { ok: 0.0, errmsg: \"no geo indices for geoNear\" }"

我认为问题在于" loc"字段嵌入在位置文档中,我不能告诉" mongo搜索附近" location.loc"。

1 个答案:

答案 0 :(得分:0)

解决方案最终是不在嵌入式位置文档中包含GeoJsonPoint。我刚用过" loc"与name和MongoDB相同的方式"理解"文档中有坐标。