我的mongoDb中有以下记录:
{
"_id" : ObjectId("56e63313059484f212a4305f"),
"title" : "The video title",
"location" : {
"coordinates" : [
-73.9667,
40.78
],
"type" : "Point"
},
}
我希望能够在完全位置找到所有积分。 如果我写:
db.videos.find({
location: {
'$nearSphere': {
'$geometry': {
type: 'Point',
coordinates: [-73.9667, 40.78]
},
'$maxDistance': 0
}
}
})[0]
我没有得到任何结果。如果我输入:
db.videos.find({
location: {
'$nearSphere': {
'$geometry': {
type: 'Point',
coordinates: [-73.9667, 40.78]
},
'$maxDistance': 0.00001
}
}
})[0]
我得到了一个结果。
我看了看,然后在文档中没有说maxDistance不能为0。
可以吗?
答案 0 :(得分:0)
因此有意义的是,设置为0
的{{3}}将被忽略,就像您没有设置选项一样。
如果您正在寻找"完全匹配"那就问一下。任何描述都不是$nearSphere
查询:
db.videos.find({
"location.coordinates" : [ -73.9667, 40.78 ]
})
当然会返回符合"确切"的文件。位置。
对于更复杂的东西,请改用聚合$maxDistance
。它投射距离"你可以在以后的过滤中使用它:
db.videos.aggregate([
{ "$geoNear": {
"near": {
"type": "Point",
"coordinates": [ -73.9667, 40.78 ]
},
"distanceField": "distance",
"spherical": true
}},
{ "$match": { "distance": 0 } }
])
因此,初始管道阶段会返回"距离"第二阶段过滤掉该距离实际为0
的任何结果。
如果您查询的对象类似于" Polygon"那么您真的应该只需要它。或其他GeoJSON表单与" exact"坐标数组。
将军"确切"阵列匹配应该适合" Point"数据