2013-12-16 3 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" 
    } 
} 

я хочу, чтобы обновить имя поля «выбранного» и поле «URL» в одном query.Currently я могу обновить выбранное поле, но не URL.

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], ... } 
Смежные вопросы