我有一个"集合"命名"地点"这种结构
{
_id : 100, pos: { lng : 126.9, lat : 35.2 } , type : "restaurant"
}
{
_id : 200, pos: { lng : 127.5, lat : 36.1 } , type : "restaurant"}
{
_id : 300, pos: { lng : 128.0, lat : 36.7 } , type : "national park"
}
我像这样执行runCommand
db.runCommand( { geoSearch : "places" ,
search : { type: "restaurant" } ,
near : [120, 40] ,
maxDistance : 10 } )
当它必须显示2个结果时,它显示了3个结果,因为_id 300具有类型国家公园。
或者我错了。是否具有索引类型的搜索" GeoHaystack"用另一种方式完成?。
如果回复可以是简单的英语或西班牙语,我会对它进行说明。
< - 更多信息 - >
我解释这很奇怪。如果我用字段类型创建集合位置。运行正确dbCommand它返回2个结果,因为用户Gabe说。但是,我不知道为什么,如果我创建收藏更改字段"键入" for" tipo"和" runCommand" as" tipo":" restaurant"它返回3条记录。很奇怪。答案 0 :(得分:1)
我复制了相同的数据,然后运行了haystack索引(下面),然后是db.runCommand
并获得了预期的2个结果。
您可能在插入时添加了额外的记录。只需运行db.places.find({})
,即可查看集合中的总记录数。
使用的索引是db.places.ensureIndex( { pos : "geoHaystack", type : 1 } , { bucketSize : 1 } )