gpt4 book ai didi

mongodb - mongodb 中的最大距离 : issue in finding near by data

转载 作者:行者123 更新时间:2023-12-03 00:05:30 24 4
gpt4 key购买 nike

我的mongo版本是3.2.6

我的 table 是restaurant_locations。

我给出的索引如下:

db.restaurant_locations._ensureIndex({'location': '2dsphere'});

该表存储的数据如下:

> db.restaurant_locations.find().pretty();
{
"_id" : ObjectId("573ff477df3c12bdd6463d07"),
"location" : {
"type" : "Point",
"coordinates" : [
72.5220332,
23.0656791
]
}
}
{
"_id" : ObjectId("573ff5badf3c12bdd6463d08"),
"location" : {
"type" : "Point",
"coordinates" : [
62.5220332,
13.0656791
]
}
}

现在,当我触发以下查询时:

db.restaurant_locations.find({
location: {
$near: {
$geometry: {
type: 'Point',
coordinates: [ 70, 20 ]
},
$maxDistance: 100000000
}
}
});

我将两条记录作为输出:

{ "_id" : ObjectId("573ff477df3c12bdd6463d07"), "location" : { "type" : "Point", "coordinates" : [ 72.5220332, 23.0656791 ] } }
{ "_id" : ObjectId("573ff5badf3c12bdd6463d08"), "location" : { "type" : "Point", "coordinates" : [ 62.5220332, 13.0656791 ] } }

现在,当我执行以下查询时:

db.restaurant_locations.find({
location: {
$near: {
$geometry: {
type: 'Point',
coordinates: [ 70, 20 ]
},
$maxDistance: 1000000
}
}
});

我只得到一条记录作为输出:

{ "_id" : ObjectId("573ff477df3c12bdd6463d07"), "location" : { "type" : "Point", "coordinates" : [ 72.5220332, 23.0656791 ] } }
  1. 我不明白 $maxDistance 的具体工作原理。
  2. 我想查找10公里范围内的餐馆,那么具体是多少,我需要传入$maxDistance?
  3. 假设我的坐标是40和20,那么如果我想要10公里以内的餐厅,上面两条记录会显示吗?

我引用了很多 mongodb 文档、stackoverflow 问题,但我没有得到确切的想法,它是如何工作的

提前感谢您的帮助

最佳答案

我不明白 $maxDistance 的工作原理。

为了获得 maxDistance 工作,您必须使用 $nearSphere 函数

您的查询将如下所示:

location: {
$nearSphere: {
$geometry: {
type: 'Point',
coordinates: [ 70, 20 ]
},
$maxDistance: 10000
}
}

我想查找 10 公里范围内的餐馆,

你必须将其乘以 1000,因为 mongo 分辨率以米为单位

假设我的坐标是40和20,那么如果我想要10公里以内的餐厅,上面两条记录会显示吗?

是的,但您必须确保先指定经度,然后指定纬度。

关于mongodb - mongodb 中的最大距离 : issue in finding near by data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37386183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com