Как я могу вернуть несоответствующие значения запроса в Mon go? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть база данных Mon go с такими документами:

[
  {
    "id": 1,
    "value": "a"
  },
  {
    "id": 2,
    "value": "b"
  }
]

Учитывая набор значений, я хотел бы знать, какие значения отсутствуют в базе данных. Итак, я хотел бы запросить Mon go и вернуть только несовпадающие значения из запроса.

Например, для массива ["b", "c"] и коллекции выше я хотел бы получить результат ["c"].

Как я могу запросить Mon go и вернуть несовпадающие значения из запроса?

1 Ответ

2 голосов
/ 26 мая 2020

Вы можете объединить $group, чтобы получить список всех существующих значений, а затем использовать $setDifference, чтобы получить фактическую разницу.

db.test.aggregate([
  {
    $group: {
      _id: null,
      values: {
        $addToSet: "$value"
      }
    }
  },

  {
    $project: {
      _id: 0,
      missing: {
        $setDifference: [["b", "c"], "$values"]
      }
    }
  }
]);

https://mongoplayground.net/p/lhfV8SGCjlo

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