Si les documents d'entrée sont :
{ _id: 1 },
{ _id: 2 },
{ _id: 5 },
{ _id: 10 }
Et le tableau à faire correspondre est :
var INPUT_ARRAY = [ 1, 7, 15 ]
L'agrégation suivante :
db.test.aggregate( [
{
$match: {
_id: {
$in: INPUT_ARRAY
}
}
},
{
$group: {
_id: null,
matches: { $push: "$_id" }
}
},
{
$project: {
ids_not_exist: { $setDifference: [ INPUT_ARRAY, "$matches" ] },
_id: 0
}
}
] )
Renvoie :
{ "ids_not_exist" : [ 7, 15 ] }