mongodb版本:osx-x86_64-2.4.5
我有一组具有以下格式的地理位置数据的用户:
[
{
"_id" : "24128f74-3e47-4f02-8188-37779f3eca3c",
"geolocation" : {
"lat" : 55.5884705,
"lng" : 13.0111425
}
},
{
"_id" : "65db4271-8eff-4619-95fb-08135cbccb8f",
"geolocation" : {
"lat" : 55.58934530000001,
"lng" : 13.0066488
},
"email" : "stephan3@stephan3.com"
},
{
"_id" : "74d17da5-af4c-4386-9efa-9817f11b64f9",
"geolocation" : {
"lat" : 55.58934530000001,
"lng" : 13.0066488
}
},
{
"_id" : "d0378d09-1f69-4e01-8602-b4805466a029",
"geolocation" : {
"lat" : 55.590957,
"lng" : 13.001412
}
}
]
由于我不想迁移任何生产数据,因此我创建了一个索引,以便能够使用地理空间查询,例如 $ geoWithin ,如http://docs.mongodb.org/manual/tutorial/build-a-2dsphere-index/所述:
db.user.ensureIndex({ geolocation : '2d'})
如果我按照以下方式查询 user 集合,我会得到一个空数组
db.user.find({ geolocation: {
$geoWithin : {
$center : [ [ 13.0111425,55.5884705 ], 1 ]
}
}});
请注意,这是用户24128f74-3e47-4f02-8188-37779f3eca3c的确切位置,因此至少应返回她。
当我将用户的地理位置属性转换为[long,lat]格式时,所以用户条目如下所示,然后再次应用相同的查询,我得到所有用户,也包括更远的用户。
[
{
"_id" : "24128f74-3e47-4f02-8188-37779f3eca3c",
"geolocation" : [
13.0111425,
55.5884705
]
},
...
]
你知道可能出现什么问题吗?