2013-12-16 140 views
0

我在mongodb中有一個具有以下結構的文檔。mongodb ruby​​:更新嵌套文檔中的字段

{ 
"_id" : ObjectId("52ad477a5873b710c0000007"), 
"ad_name" : "name_6", 
"selected" : true, 
"vendor" : "facebook.com", 
"status" : "VALID", 
"ad_details" : { 
    "Body" : "something", 
    "Title" : "random_6", 
    "Url" : "www.someurl.com", 
    "Image" : "blob_data" 
    } 
} 

我想更新的字段名稱「中選擇」和字段「地址」一query.Currently我可以更新所選字段而不是網址。

ads.update({"_id" => BSON::ObjectId.from_string(doc_id)}, 
          {"$set"=> {"selected" => select, "Url" => params["urls"][indx]}} 

此查詢不會給我任何錯誤,但不會更新Url,因爲它存在於ad_details子文檔中。另外我不想要更新整個ad_details json這是做它的一種方式。請幫助!

回答

0

你只需要指定值的路徑要更新:

'$set' => { 'ad_details.Url' => params['urls'][idx], ... }