Mongo geoNear Aggregation Pipeline - «ближнее» поле должно быть точкой - PullRequest
0 голосов
/ 23 мая 2019

Я использую конвейер Монго в поиске агрегации по 2 коллекциям, местоположениям и местам.

Я пытаюсь вернуть все места, где находятся эти места.

Я получаю сообщение об ошибке: «MongoError: поле« рядом »должно быть точкой»

Я считаю, что это потому, что я пытаюсь использовать переменную $ point в конвейере из поиска let в поиске, и я здесь что-то делаю не так. Все ответы, которые я вижу здесь, имеют статические координаты, но я хочу использовать ответы из поиска.

Это код, который у меня есть:

   return await this.placeModel.aggregate([{
      $lookup : {
        from : "locations",
        let : {point : "location.coordinates"},
        pipeline: [  {
          $geoNear: {
            distanceField: "distance",
            near: { type: "Point", coordinates: "$point" },
            maxDistance: 20,
            spherical: true
          }
        }],
        as : "places"
      }
    }]);
  }

У меня есть модель Мангуста Плейс и модель Локация. Каждая модель имеет точку GeoJson, которая выглядит следующим образом:

location: {
    type: { type: String },
    coordinates: []
  },

Как правильно ссылаться на точку, если это вообще возможно.

...