我定义了一个" 2dsphere"集合loc
中字段c
的索引:
db.c.createIndex( { loc : "2dsphere" } )
我在c
集合中有以下文档。它是从[0,0]到[10,10]的LineString:
db.c.insert({"name": "myLine", "loc": { type: "LineString", coordinates: [ [ 0, 0 ], [ 10, 10 ] ] }})
注意[5,5]将是一个点。但是,以[5,5]为中心的邻近查询(使用$near
运算符)与文档不匹配:
db.c.find({
loc: {
$near: {
$geometry: {
type: "Point" ,
coordinates: [ 5, 5 ]
},
$maxDistance: 0.1,
}
}
})
也许LineString不会那样工作,只有端点(在这种情况下为[0,0]和[10,10])从地理空间查询的角度来看是否相关?在这种情况下,是MongoDB中的限制geo spacial queries implementation还是GJSON standard中的限制?
(直到我做了这个小实验,我认为LineString和MultiPoint之间的区别在于前者考虑了连接点的线,而后者只考虑了线末端的点。在这个实验之后,我没有看到差异......)。
答案 0 :(得分:1)
我必须在mongodb和postgis之间选择。但是mongodb有这个负面观点。请参阅案例:Find points near LineString in mongodb sorted by distance