如何搜索/索引多个地理位置位置以进行聚合搜索?

时间:2017-11-12 06:30:55

标签: mongodb mongoose

我使用$ geoNear根据用户位置搜索营业地点。然而,当我执行搜索时,Mongo只允许我索引1个地理位置,有些企业有多个位置,我希望能够转换位置索引以找到最接近的结果。

这就是我目前所拥有的:

 location : {
        type: { type: String, default: "Point" },
        coordinates: { type: [Number], default: [115.8575,-31.953] },
    },

这就是我想要的:

 location : [{
            name: "Suburb 1",
        type: { type: String, default: "Point" },
        coordinates: { type: [Number], default: [115.8575,-31.953] },
    },
    {
            name: "Suburb 2",
        type: { type: String, default: "Point" },
        coordinates: { type: [Number], default: [115.8575,-31.953] },
    }],

搜索会找到最接近的结果。有理想的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

如果您想使用$geoNear,则应考虑重新设计data model$geoNear会返回最近的位置(已排序),并且需要geospatial-index(es)

建议是为每个营业地点存储单个文档条目。

您可能还会发现Tutorial: Geospatial非常有用,尤其是示例。