我有这样的文档结构:
{
_id: ...,
name: ...,
keywords: {
group_a: [1, 2, 5],
group_b: [4, 7, 6]
}
}
我知道我可以添加元素到一个的keywords
对象的元素,如下所示:
db.coll.update({_id: ...}, {
$addToSet: {
'keywords.group_a': {
$each: [9, 12, 17]
}
}
})
我是否可以运行命令将同一组元素添加到group_a
和 group_b
?像
db.coll.update({_id: ...}, {
$addToSet: {
['keywords.group_a', 'keywords.group_b']: {
$each: [9, 12, 17]
}
}
})
当然无效。
我事先知道了这些组的名称,但是“将它们添加到所有元素”解决方案同样没问题。
答案 0 :(得分:0)
您可以使用单个$addToSet
运算符影响多个字段,如下所示:
db.coll.update({_id: ...}, {
$addToSet: {
'keywords.group_a': {
$each: [9, 12, 17]
},
'keywords.group_b': {
$each: [9, 12, 17]
}
}
})
为了保持干爽,你当然可以这样做:
var each = { $each: [9, 12, 17] };
db.coll.update({_id: ...}, {
$addToSet: {
'keywords.group_a': each,
'keywords.group_b': each
}
}
})