Встраивание документов непосредственно в документы с монгоидом - PullRequest
1 голос
/ 19 августа 2011

Мне нужно массово вставить массив встроенных документов в существующий документ. Я пробовал приведенный ниже код, но он не работал

 arr_loc = []
 arr_loc << Location.new(:name=> "test") << Location.new(:name=> "test2")
 biz = Business.first
 biz.locations = arr_loc
 biz.save # not working

В настоящее время я вставляю каждый документ отдельно, зацикливая массив, я надеюсь, что есть более чистый способ сделать это.

из оболочки монго мы можем легко сделать это следующим образом

> var mongo = db.things.findOne({name:"mongo"});
> print(tojson(mongo));
{"_id" : "497da93d4ee47b3a675d2d9b" , "name" : "mongo", "type" : "database"}
> mongo.data = { a:1, b:2};
{"a" : 1 , "b" : 2}
> db.things.save(mongo);
> db.things.findOne({name:"mongo"});
{"_id" : "497da93d4ee47b3a675d2d9b" , "name" : "mongo" , "type" : "database", "data" : {"a" : 1 , "b" : 2}}
>

проверьте ссылку для получения дополнительной информации .. возможно ли это сделать с помощью mongoid?

1 Ответ

0 голосов
/ 19 августа 2011

Оказывается, проблема в вызове метода сохранения после присваивания

 biz.locations = arr_loc  #this is fine
 biz.save # no need for that

Mongoid обновляет документ в самом назначении, явного сохранения не требуется. См. Эту ветку mongoid группы Google (спасибо Ник Хоффман) для получения дополнительной информации

...