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-索引/:
db.user.ensureIndex({ geolocation : '2d'})
如果我按以下方式查询用户集合,我会得到一个空数组
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
]
},
...
]
你知道可能出了什么问题吗?