Mongodb 使用match、lookup和aggregate将一个集合中存在的所有结果从另一个集合中排除
如何根据集合B中集合A中存在的当前用户Id从数据库集合中排除所有结果Mongodb 使用match、lookup和aggregate将一个集合中存在的所有结果从另一个集合中排除,mongodb,mongodb-query,nosql,Mongodb,Mongodb Query,Nosql,如何根据集合B中集合A中存在的当前用户Id从数据库集合中排除所有结果 user.aggregate([ { $lookup: { from: "views", localField: "_id", foreignField: "viewerId", as: "v", }, }, { $match
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的结果,当前代码也会给出结果
获得的结果:
_id: ObjectId("60b4f966072bac7e4014b3c5"),
name: 'user',
v:
[ { _id: ObjectId("60b87d2efc79ba78212de024"),
viewerId: ObjectId("60b4f966072bac7e4014b3c5"),
targetId: ObjectId("60b7b3d90e7bbb2801d9a05f") } ] }
预期结果
[]
DB集合截图