2012-11-22 53 views
0

我有一個文件結構是這樣的一個以上的元素:適用改性劑到對象

{ 
    _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_agroup_b?類似於

db.coll.update({_id: ...}, { 
    $addToSet: { 
    ['keywords.group_a', 'keywords.group_b']: { 
     $each: [9, 12, 17] 
    } 
    } 
}) 

這當然是無效的。

我事先知道這個組的名字,但是一個「添加到全部元素」的解決方案同樣沒問題。

回答

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 
    } 
    } 
})