所以,我有这个系列。我正在尝试将值9的responseId添加到respondIds数组中,其中requestId为2。
[
{
_id: 1,
partsIds: [
{
requestId: 1,
responesIds: [1, 2, 3, 4]
},
{
requestId: 2,
responesIds: [5, 6, 7, 8]
}
]
}
]
所以这里的伪代码是:$addToSet:{responseIds:9} where requestId:2
我怎样才能做到这一点?
答案 0 :(得分:0)
所以,我找到了一个有效的解决方案,我还没有给它进行广泛的测试,如果你找到了更好的解决方案,我会非常乐意倾听。
db.collection.update(
{ _id: 1, 'partsIds.requestId': 2 },
{ $addToSet: { 'partsIds.$.responsesIds': 9 } }
);
$
被称为positional operator,它获取查询中第一个匹配项的索引(在我的情况下,索引为1),您可以在更新中使用它像这样。