Каков наилучший подход к списку предметов почти после получения всех деталей из другой коллекции? - PullRequest
0 голосов
/ 25 января 2020

Я что-то разрабатываю в mongodb / mon goose. У меня есть такой документ {"organizer": "Some University", venues: [{"id": "1", "location": {"type": "Point": "coordinates":[lon, lat]}}]}

, затем еще один для событий {"event": "Event 1", "venues":["1", "2"]...}

Я хочу получить полную информацию о местах, прежде чем запросить geoNear на основе текущего местоположения конца пользователь.

Я прошел различные уроки по этому вопросу. Но без удачи. Любые идеи были бы хорошы.

1 Ответ

0 голосов
/ 25 января 2020

Пожалуйста, предоставьте пример ожидаемого результата, чтобы понять, что вы пытаетесь сделать ...

Чтобы объединить 2 коллекции ($lookup), где условие не является полями 1 к 1, вы можете использовать некоррелированный подзапрос с let / pipeline полей.

db.collection.aggregate([
  {
    "$unwind": "$venues"
  },
  {
    $lookup: {
      from: "event",
      let: {
        venues_id: "$venues.id"
      },
      pipeline: [
        {
          $match: {
            $expr: {
              $in: [
                "$$venues_id",
                "$venues"
              ]
            }
          }
        }
      ],
      as: "events"
    }
  }
])

MongoPlayground

...