0

当我使用 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 键,但它们存在于数据库的每个文档中。

我错过了什么吗?

提前致谢!

4

0 回答 0