MongoDB:索引GeoHaystack geoSearch示例有问题

时间:2014-12-10 16:30:15

标签: mongodb

我有一个"集合"命名"地点"这种结构

{
     _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条记录。很奇怪。

1 个答案:

答案 0 :(得分:1)

我复制了相同的数据,然后运行了haystack索引(下面),然后是db.runCommand并获得了预期的2个结果。

您可能在插入时添加了额外的记录。只需运行db.places.find({}),即可查看集合中的总记录数。

使用的索引是db.places.ensureIndex( { pos : "geoHaystack", type : 1 } , { bucketSize : 1 } )