我有以下文件:
{
_id: ObjectId("59e4540bf14f1607b90ffb81"),
likedBy: [
{
"userId" : ObjectId("59edd922df2339579fc2a528"),
"_id" : ObjectId("5a13c199f93b7ab1004c4318")
},
{
"userId" : ObjectId("59edd922df2339579fc2a448"),
"_id" : ObjectId("5a13c199f93b7ab1004c4412")
}
]
},
{
_id: ObjectId("59e4540bf14f1607b90ffb83"),
likedBy: [
{
"userId" : ObjectId("59edd922df2339579fc2a528"),
"_id" : ObjectId("5a13c199f93b7ab1004c4323")
},
{
"userId" : ObjectId("59edd922df2339579fc2a448"),
"_id" : ObjectId("5a13c199f93b7ab1004c6423")
}
]
}
我想要做的就是找到的所有文件的ID是["59e4540bf14f1607b90ffb81", "59e4540bf14f1607b90ffb83"]
,和删除子文档,它userId
是59edd922df2339579fc2a528
。我想在一个查询中从特定文档(文档数组)中删除特定用户的所有喜欢。循环遍历 id 数组我可以做,但我想传递 id 并拉。我当前的查询使用一个 ID:
post
.findByIdAndUpdate(postId, {$pull: {likedBy: {userId: userId}}}, {new: true}, function (err, post) {
if (err) {
sendJsonResponse(res, 404, err);
} else {
sendJsonResponse(res, 204, post);
}
});
我想要的是在所有匹配的文档中传递一个帖子 id 数组并拉取特定用户的喜欢。
试试这个:
post.update(
{
_id: {
$in: [
ObjectId("59e4540bf14f1607b90ffb83"),
ObjectId("59e4540bf14f1607b90ffb81")
]
}
},
{
$pull: {
likedBy: {
$or: [
{ userId: ObjectId("59edd922df2339579fc2a448") },
{ userId: ObjectId("59edd922df2339579fc2a528") }
]
}
}
},
{
multi: true
},
function(err, rawResponse) {
/*...*/
}
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句