当我使用 mongoose 和 mongoDB$near
地理空间运算符(也尝试过$nearSphere
)对我的 MongoDB 数据库进行查询时,我的代码返回 200 HTTP 状态以及正确的文档列表,但它们没有从最近到最远排序(不幸的是,这违背了$near
操作员)。
我确保在我的geometry
密钥上创建了一个“2dsphere”索引,并且该密钥是根据 GeoJson 指南进行格式化的。
这是我用来查询数据库的代码:
const locations = await Location.find({
geometry: {
$near: {
$geometry: {
type: 'Point',
coordinates: [lon, lat]
}
}
}
});
纬度和经度在哪里Floats
。
从我的应用程序返回的前 3 个对象如下:
{
"_id": "5e2ef89e326e885327c6e898",
"address": "20 Brune Street",
"availability": false,
"distance_to": 10583,
"power": 3840,
"coordinates": {
"latitude": 51.51792,
"longitude": -0.075343
}
},
{
"_id": "5e2ef79d326e885327c6e882",
"address": "32 Bedford Row",
"availability": true,
"distance_to": 8028,
"power": 3840,
"coordinates": {
"latitude": 51.520297,
"longitude": -0.116327
}
},
{
"_id": "5e2ef801326e885327c6e891",
"address": "42 York Way",
"availability": false,
"distance_to": 8322,
"power": 3840,
"coordinates": {
"latitude": 51.532265,
"longitude": -0.12251
}
}
请注意,我故意不在返回的对象中包含 GeoJson 键,但它们存在于数据库的每个文档中。
我错过了什么吗?
提前致谢!