2012-05-25 72 views
1

$addToSet似乎只添加到數組,是否有可能添加散列到散列?

{ 
    "a"=>"1", 
    "b"=>"2", 
    "c"=>{"d"=>"3"} 
} 

{ 
    "a"=>"1", 
    "b"=>"2", 
    "c"=>{"d"=>"3","e"=>"4"} 
} 

而且在紅寶石會優先。但是我可以用任何atm來幫助我解決這個問題。

回答

3

是的,$addToSet是爲了在陣列上使用。你需要$set和點符號

db.collection.update(query, {$set: {'c.e': '4'}}); 
1

你不需要$addToSet,因爲哈希(即BSON對象)只能有任何給定的重點之一 - 他們已經有關於鍵(未設置值語義,然而)。

要更新BSON對象中的子對象,應該按照Sergio的建議使用$set