我需要将嵌入文档数组批量插入现有文档。我已经尝试了以下代码,但它无法正常工作
arr_loc = []
arr_loc << Location.new(:name=> "test") << Location.new(:name=> "test2")
biz = Business.first
biz.locations = arr_loc
biz.save # not working
目前我通过循环数组分别插入每个文档,我希望有更好的清洁方法来做到这一点。
来自mongo shell我们可以像这样轻松地做到这一点
> 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}}
>
检查link以获取更多信息..是否可以使用mongoid执行此操作?
答案 0 :(得分:0)
在分配后调用save方法时出现了问题
biz.locations = arr_loc #this is fine
biz.save # no need for that
Mongoid在赋值本身上更新文档,不需要显式保存。有关详细信息,请参阅此mongoid google group thread (Thanks Nick hoffman)