#mongodb #mongodb-query #nosql
Вопрос:
Как я могу исключить все результаты из коллекции базы данных на основе идентификатора текущих пользователей, которые присутствуют в коллекции A из коллекции B
user.aggregate([
{
$lookup: {
from: "views",
localField: "_id",
foreignField: "viewerId",
as: "v",
},
},
{
$match: {
$and: [
{
_id: {
$ne: ObjectId('60b7b3d90e7bbb2801d9a05f'),
},
},
{ v: { $not: { $elemMatch: { viewerId: ObjectId('60b7b3d90e7bbb2801d9a05f') } } } },
],
},
},
]);
Текущий код дает мне результаты, даже если есть результат с идентификатором viewerId = идентификатор пользователя
Полученный Результат:
_id: ObjectId("60b4f966072bac7e4014b3c5"),
name: 'user',
v:
[ { _id: ObjectId("60b87d2efc79ba78212de024"),
viewerId: ObjectId("60b4f966072bac7e4014b3c5"),
targetId: ObjectId("60b7b3d90e7bbb2801d9a05f") } ] }
Ожидаемый результат
[]