Агрегат MongoDB из настраиваемых зарубежных коллекций - PullRequest
0 голосов
/ 10 февраля 2019

Мои документы в коллекции заказов имеют ключ _client, который ObjectId ссылается на другую сущность в другой коллекции.Коллекция может быть организация и может быть пользователи - я имею в виду - это коллекция переменных.Я хочу сообщить Монго о поиске, если идентификатор _client найден в обеих коллекциях.

{
    $lookup: {
      from: "users", // could be "organizations" 
      let: { "client": "$_client" }, // could be "_organization"
      pipeline: [
        { $match: { $expr: { $eq: ["$_id", "$$client"] }}},
      ],
      as: "client"
    }
  },
  {
    $unwind: "$client"
  },

Я попытался настроить два поиска, один раз для _client и один для _organization однако, когда там отсутствует один из них, я просто ничего не получил.

1 Ответ

0 голосов
/ 10 февраля 2019

$unwind отфильтровали документы, в которых массивы пусты и не содержат элементов.

Итак, вы должны использовать preserveNullAndEmptyArrays и установите его на true

{ "$unwind": { "path": "$client", "preserveNullAndEmptyArrays": true }}

и то же самое для или organizations

{ "$unwind": { "path": "$organization", "preserveNullAndEmptyArrays": true }}
...