halo_field.merge(subhalo, left_index=True, right_index=False, right_on='halo_index')
在Java或Python中如何在RethinkDB中将子文档“ A”的“名称”更新为2?
答案 0 :(得分:0)
如果您可以依靠“ A”元素的位置,则可以这样更新:
r.db("DB").table("TABLE").get(1)
.update({subdocuments:
r.row("subdocuments").changeAt(0, r.row("subdocuments").nth(0).merge({"name":2}))})
如果您不能依靠这个职位,就必须自己找到它:
r.db("DB").table("TABLE").get(1).do(function(doc){
return doc("subdocuments").offsetsOf(function(sub){return sub("id").match("A")}).nth(0)
.do(function(index){
return r.db("DB").table("TABLE").update({"subdocuments":
doc("subdocuments").changeAt(index, doc("subdocuments").nth(index).merge({"name":2})) })})
})
作为替代方案,您可以使用map函数遍历数组元素并更新与您的条件相匹配的元素
r.db("DB").table("TABLE").get(1)
.update({
subdocuments: r.row("subdocuments").map(function(sub){
return r.branch(sub("id").eq("A"), sub.merge({name: 2}), sub)
})
})