Javascript 将修改器应用于对象的多个元素
我的文档结构如下:Javascript 将修改器应用于对象的多个元素,javascript,mongodb,Javascript,Mongodb,我的文档结构如下: { _id: ..., name: ..., keywords: { group_a: [1, 2, 5], group_b: [4, 7, 6] } } db.coll.update({_id: ...}, { $addToSet: { 'keywords.group_a': { $each: [9, 12, 17] } } }) 我知道我可以向关键字对象的一个元素添加元素,如下所示: { _id:
{
_id: ...,
name: ...,
keywords: {
group_a: [1, 2, 5],
group_b: [4, 7, 6]
}
}
db.coll.update({_id: ...}, {
$addToSet: {
'keywords.group_a': {
$each: [9, 12, 17]
}
}
})
我知道我可以向关键字
对象的一个元素添加元素,如下所示:
{
_id: ...,
name: ...,
keywords: {
group_a: [1, 2, 5],
group_b: [4, 7, 6]
}
}
db.coll.update({_id: ...}, {
$addToSet: {
'keywords.group_a': {
$each: [9, 12, 17]
}
}
})
是否可以运行命令将相同的元素集添加到组a
和组b
?差不多
db.coll.update({_id: ...}, {
$addToSet: {
['keywords.group_a', 'keywords.group_b']: {
$each: [9, 12, 17]
}
}
})
这当然是无效的
我预先知道组的名称,但是“将它们添加到所有元素”解决方案同样好。您可以使用单个
$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
}
}
})