MongoDB在附近插入折线和查询

时间:2015-03-05 07:29:44

标签: mongodb mongodb-query geospatial mongodb-java

我有一系列形成多线(路径)的点。我需要将它存储在mongodb中并在附近点查询。

如何在mongodb中存储多义线?

我可以用$ near来查询吗?

将折线保存到mongodb后,我将有一个点和距离点,需要查询数据库。

编辑:

我已经使用GPS跟踪用户的位置,我需要在mongodb中保存路径,该怎么做?

然后用户可以搜索一定距离的地方附近的路径,所以我需要用$ near函数搜索mongodb。

1 个答案:

答案 0 :(得分:2)

所以你想要的实际上是一个LineString GeoJSON类型,MongoDB支持它:

{ 
    "loc": { 
        "type": "LineString", 
        "coordinates": [ [ 40, 5 ], [ 41, 6 ] ] 
     }
}

这允许您沿着“路径”记录一组“坐标”,您希望将其包含在数据存储中作为单个对象。这样做的主要优点是你可以对这样一个对象进行地理空间查询(而不是一个独特的“点”,并检索单个文档中连接“点”的整个“集合”为“最近”。更好的是“多个形状” “这样可以轻松配合。

那么您可以根据需要使用$near或其他运算符进行查询:

db.collection.find({
    "loc": {
        "$near": {
            "$geometry": {
                "type": "Point",
                "coordinates": [ 41,5 ]
            },
            "$maxDistance": 10000
        }
     }
})

查询中的$near运算符将返回由查询的GeoJSON对象或传统坐标点的“最近”排序的结果。

这基本上适合你。