Node.js 如何编写Mongo查询如果我将数组ID传递给聚合查询,则不会获取三重嵌套数组对象
我正在收集3只猫鼬的数据 对于所有集合,UserEmail都是唯一的。 如果我传递了阻塞用户数组,其中只有像“…@gmail.com”这样的用户电子邮件,“…@yahoo.com”传递到此数组以聚合查询。我不会从这个被阻止的用户那里获取数据,包括客户、订阅源和共享订阅源Node.js 如何编写Mongo查询如果我将数组ID传递给聚合查询,则不会获取三重嵌套数组对象,node.js,mongodb,Node.js,Mongodb,我正在收集3只猫鼬的数据 对于所有集合,UserEmail都是唯一的。 如果我传递了阻塞用户数组,其中只有像“…@gmail.com”这样的用户电子邮件,“…@yahoo.com”传递到此数组以聚合查询。我不会从这个被阻止的用户那里获取数据,包括客户、订阅源和共享订阅源 顾客: 我需要客户数据,就像我在预测中喜欢的那样 提要架构: 在feed中,我有feedLike数组和comments数组 在评论数组中,我有like[]和replay[] 现在,我需要从上述所有阵列中筛选被阻止的用户 我需要如
getAllFeedsDataAggregateQuery: (blockedUsers) => {
return chatUsers.aggregate([
{
$match:{
UserEmail: { $nin : blockedUsers}
}
},
{
$project: {
"UserName": 1,
"UserEmail": 1,
"profilepic": 1,
"Address.countryFlag": 1,
"displayRegion": 1,
"settings.privacySettings.blockedUsers": 1,
"settings.privacySettings.hidePostUsers": 1
}
},
{
$lookup: {
from: "userfeeds",
localField: "UserEmail",
foreignField: "UserEmail",
as: "feeds"
}
},
{ $unwind : "$feeds"},
{
$match :{
$and : [{
'feeds' : {UserEmail :{$nin : blockedUsers}},
'feeds.feedLikes' : { UserEmail : {$nin : blockedUsers}},
'feeds.comments': { UserEmail : {$nin : blockedUsers}},
'feeds.comments.replies' : { UserEmail : {$nin : blockedUsers}},
'feeds.comments.likes' : { UserEmail : {$nin : blockedUsers}}
}]
}
},
{
$lookup: {
from: "sharedfeeds",
localField: "UserEmail",
foreignField: "UserEmail",
as: "sharedfeeds"
}
},
{ $unwind : "$sharedfeeds"},
{
$match : {
$and: [{
'sharedfeeds' :{ UserEmail : {$nin : blockedUsers}},
'sharedfeeds.feedLikes' : { UserEmail : {$nin : blockedUsers}},
'sharedfeeds.comments': { UserEmail : {$nin : blockedUsers}},
'sharedfeeds.comments.replies' : { UserEmail : {$nin : blockedUsers}},
'sharedfeeds.comments.likes' : { UserEmail : {$nin : blockedUsers}}
}]
}
}
]).exec()
}