0
下面是一個名爲Bets的引用子文檔,它嵌入另一個稱爲「用戶」模型的屬性數組中。當用戶刪除好友時,與該特定用戶關聯的所有投注也應從用戶文檔中刪除(與已刪除的其他用戶成爲好友的用戶)。如何從文檔中刪除子文檔,WHERE條件x = true或條件y =真?
我正在尋找這樣做的查詢。首先,這裏是具體的賭注實例。
{
"_id" : ObjectId("5817cc81233ef74d418d5a1f"),
"amount" : 50,
"name" : "Redskins vs Cowboys",
"description" : "let's see who wins this game",
"status" : "requested",
"requestee" : {
"user" : ObjectId("5817a417146dbb4b380ad1b2"),
"winnerVote" : null
},
"requestor" : {
"user" : ObjectId("5817a41e146dbb4b380ad1b3"),
"winnerVote" : null
},
"__v" : 0
}
到目前爲止,這是我破壞友誼控制器:
destroy: function(req, res) {
User.findByIdAndUpdate(req.params.id,
{ $pull: { "friendships": {"friend": req.params.friendId } }, $pull: { "bets": {"requestee.id": req.params.friendId ****OR**** "requestor.id": req.params.friendId}} }, function(err, user) {
if (err) {
res.send({error: err});
} else {
User.findByIdAndUpdate(req.params.friendId,
{ $pull: { "friendships": {"friend": req.params.id } } }, function(err, user) {
if (err) {
res.send({error: err})
} else {
res.status(200).send();
}
}
)
}
})
}
正如你所看到的,第一'findByIDandUpdate'
查詢後,我有兩個$pull
命令。第二個是我試圖實現這個我試圖產生的新查詢的地方。
我想拉投注,其中bet.requesteEE.user === oldFriendID
OR(||)拉BETS,其中bet.requestOR.user === oldFriendID
有是$或運算符,它需要一系列文檔來匹配表達式,您可以嘗試以下內容: $ pull:{$或:[{「bets」:{「requestee.id」:friendId}},{「賭注「:{」requestor.id「:friendId}}]} 我不確定這是否是有效的語法對於更新操作員,您可能需要使用elemMatch。 如果您想對多個文檔進行更新,您還可以選擇{multi:true}作爲第三個操作符。 – dyouberg
似乎沒有與$或運營商的工作,但謝謝你,我絕對讚賞迴應:) – user7024499