【发布时间】:2014-09-25 19:12:20
【问题描述】:
如何使用 ruby 的 mongo 驱动更新多级文档。例如,这里是文档的一部分:
...
"group_overrides": [
{
"additional_filesystem_gb": 0,
"components": [
{
"comp": "jbosseap-6",
"cart": "jbosseap-6",
"cart_id": ObjectId("5423d363f4b25eea0b000021")
}
],
"max_gears": 1
}
],
在 mongo-shell 中,我可以执行以下操作:
db.applications.update({name:"ulmuqhfv"}, {$set: {"group_overrides.0.additional_filesystem_gb": 1}})
并且文档将被更新。当我尝试以下操作时:
db.update('applications', {"app_name"=>"ulmuqhfv"}, {"$set"=>{"group_overrides.0.additional_filesystem_gb"=>1})
失败了。更新数组的正确语法是什么?
db 是围绕 ruby mongo 驱动程序的包装类的一个实例。下面是更新方法的样子:
def update(c_name, selector, opts)
db = @db.collection(c_name)
if opts
db.update(selector, opts).to_a
else
db.update(selector).to_a
end
end
【问题讨论】:
-
Ruby 中的
db是什么? “失败”具体是什么意思? -
db 只是一个包装器,它基本上是访问集合并调用 update()