Фильтр ключей не в коллекции - PullRequest
0 голосов
/ 23 января 2020

Как нам найти ключи, которых нет в коллекции.
Учитывая список входных ключей ['3321', '2121', '5647'], я хочу вернуть те, которые не существуют в коллекции:

{ "_id" : { "$oid" : "5e2993b61886a22f400ea319" }, "scrip" : "5647" }
{ "_id" : { "$oid" : "5e2993b61886a22f400ea31a" }, "scrip" : "3553" }

Таким образом, ожидаемый результат составляет ['3321', '2121']

1 Ответ

1 голос
/ 23 января 2020

Эта агрегация получает желаемый вывод (работает с MongoDB версии 3.4 или новее):

INPUT_ARRAY = ['3321', '2121', '5647']

db.test.aggregate( [
{
  $match: {
    scrip: {
        $in: INPUT_ARRAY
    }
  }
},
{ 
  $group: { 
      _id: null, 
      matches: { $push: "$scrip" } 
  } 
},
{ 
  $project: {
      scrips_not_exist: { $setDifference: [ INPUT_ARRAY, "$matches" ] },
      _id: 0
  } 
}
] )

Вывод:

{ "scrips_not_exist" : [ "3321", "2121" ] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...