我们说我有这样的用户集合:
{
"lastName": "Doe",
"firstName": "John",
...
"location": {
"country": "USA",
"city": "New York",
...
"lat": 123456,
"lon": 123456
}
}
我希望按距离过滤我的收藏:Return all users near 100 km
。
文件$near中有。但无法找到如何使用它。
我有一个这样的例子:
db.users.find({
location: {
$near: [-73.9667, 40.78],
$maxDistance: 100000
}
});
所以我认为我的问题是如何告诉mongo他必须检查user.location.lat
和user.location.lon
来计算距离。
答案 0 :(得分:1)
使用您的数据集,您不能。
问题是您没有地理索引。你需要一个人进行地理搜索。
为了能够达到您想要的效果,您需要重新构建数据集,如下所示:
{
"lastName": "Doe",
"firstName": "John",
...
"location": {
"country": "USA",
"city": "New York",
...
"coords": [123456, 123456]
}
}
coords
数组为[latitude, longitude]
。然后,您需要在该字段上创建一个2d索引。