如何从文档中删除子文档,其中条件x = true或条件y = true
How to remove a subdocument from a document, WHERE condition x = true OR condition y = true?
下面是一个名为Bets的引用子文档,它嵌入到另一个名为Users的模型的属性数组中。当用户删除好友时,与该特定用户相关的所有下注也应从user文档中删除(该用户与现在已删除的其他用户是好友)。
我正在寻找这样做的查询。首先,这里是特定的bet实例。
{
"_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
或(||)拉赌注,其中bet.requestOR.user === oldFriendID
您可能必须在Mongoose回调中处理此问题-看看是否有效:
User.findById(req.params.id, function(err, user) {
// for each bet in user.bets
user.bets.forEach(function(bet) {
if (bet.requestee === friendId || bet.requester === friendId) {
delete bet;
}
});
user.save();
// Handle response logic here or in the save callback.
});
相关文章:
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- BrowserId登录请求在文档加载时被调用
- 从Javascript和Php变量创建Html模板文档
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在jquery文档准备好之前加载Modernizr
- 如何判断何时将dom节点添加到文档中
- 无法获取文档.GetElementById工作正常
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 如何在一个字段中只提取6个值为true的文档
- MongoDB:确保只有一个文档可以将字段设置为 true
- 如何从文档中删除子文档,其中条件x = true或条件y = true