我有以下文档:
{
_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) {
/*...*/
}
);