Как объединить две коллекции в MongoDB?

Как можно улучшить запрос для получения документов из первой коллекции, у которых значение цвета совпадает с цветом из второй коллекции, минимизируя использование оператора $unwind?
  • 10 апреля 2024 г. 20:10
Ответы на вопрос 1
Для объединения двух коллекций в MongoDB можно воспользоваться оператором $lookup. Например, если у нас есть коллекция "collection1" и "collection2", и мы хотим объединить их по полю "color", мы можем использовать следующий запрос:

```mongodb
db.collection1.aggregate([
   {
      $lookup:
         {
           from: "collection2",
           localField: "color",
           foreignField: "color",
           as: "matched_docs"
         }
    }
])
```

Чтобы улучшить запрос для получения документов из первой коллекции, у которых значение цвета совпадает с цветом из второй коллекции, минимизируя использование оператора $unwind, мы можем воспользоваться оператором $match посл оператора $lookup:

```mongodb
db.collection1.aggregate([
   {
      $lookup:
         {
           from: "collection2",
           localField: "color",
           foreignField: "color",
           as: "matched_docs"
         }
    },
    {
        $match: {
            matched_docs: {$ne: []}
        }
    }
])
```

Этот запрос выполнит объединение коллекций и затем фильтрует результаты, оставляя только документы из первой коллекции, у которых есть совпадения по цвету второй коллекции. Таким образом, мы избегаем необходимости использования оператора $unwind и улучшаем производительность запроса.
Похожие вопросы