【发布时间】:2014-10-03 19:57:11
【问题描述】:
我在 Mongodb 中遇到了 $pull 的(希望是)小的语法问题。
bulk.find({_id: new mongo.ObjectID(req.session._id)}).updateOne({$pull: {
firstArray: {id: req.params.id},
'secondArray.firstArrayIds': req.params.id
'secondArray.$.firstArrayIds': req.params.id
}});
firstArray $pull 工作得很好。
但是 secondArray.firstArrayIds 和/或 secondArray.$.firstArrayIds 没有。我在这里做错了什么?
这是我的数据结构:
clients: {
firstArray: [
{
_id: '153'.
someField1: 'someVal1',
}
...
]
secondArray: [
{
_id: '7423'.
someField1: 'someVal1',
firstArrayIds: [153, 154, 155, ...]
}
...
]
}
编辑如果secondArray 中有多个嵌入对象,其中firstArrayIds 可以包含我要删除的ID,该怎么办。换句话说,当删除firstdArray 中的对象时,我想删除all secondArray 的firstArrayIds 中的引用,而不仅仅是第一个匹配项。
【问题讨论】:
-
您需要在查询对象中标识要更新的
secondArray元素,以便$可以工作。另外,我假设firstArrayIds不包含像您显示的单个字符串? -
你猜对了!已编辑。
标签: mongodb mongodb-query