Arrays 数组第n个元素的REQUL update属性
我有以下疑问-Arrays 数组第n个元素的REQUL update属性,arrays,updates,rethinkdb,Arrays,Updates,Rethinkdb,我有以下疑问- r.db("schema").table("table") .get("7201f732-4396-4201-9df4-099506a473b5")("observation")("items")(0) 它返回以下结果- { "description": null , "index": "AF" "name": "ALL FARM BASE" , "opted": true , "parent": null , "properties": [ "AF 1" , "AF
r.db("schema").table("table")
.get("7201f732-4396-4201-9df4-099506a473b5")("observation")("items")(0)
它返回以下结果-
{
"description": null ,
"index": "AF"
"name": "ALL FARM BASE" ,
"opted": true ,
"parent": null ,
"properties": [
"AF 1" ,
"AF 2"
] ,
"sub_heads": [
"CB" ,
"AB" ,
"LB"
] ,
"type": "HEAD"
}
查询应该足以解释数据结构,但我将以任何方式解释它。查询基本上获取数组项的第一个元素,这是所选文档的objectobservation
属性
现在我如何更新上述查询的说明键?数组确实很棘手。。。大概是这样的:
r.db("schema").table("table").get("7201f732-4396-4201-9df4-099506a473b5").update({
observations: {
items: r.row('observations')('items').changeAt(
0,
r.row('observations')('items')(0).merge({
description: 'my new description'
}))
}
})
这个查询应该足以解释这个过程,但无论如何我都会解释。;)
.get(“7201f732-4396-4201-9df4-099506a473b5”)
提供了我们将处理的选择
.update(…)
将在选择中的每个文档上运行其参数,将上一个文档与结果合并(“merge”在这里意味着不需要提供完整对象,如使用时。replace(…)
),最后将更改提交给数据库
{observations:{items:…}
目标是我们将在文档中工作的位置,我们将更改哪些键(这里只有一个,observations.items
)-它是无损的(对象方面的),因为我们正在更新,而不是替换
r.row('observations')('items')
以文档中的同一点为目标(r.row
在选择处理上下文中是“当前处理的文档”),但这里我们被包装在ReQL功能中,而不仅仅是使用普通对象
.changeAt(…)
将改变调用它的数组,用第二个参数提供的数据覆盖第一个参数给出的索引,并返回(不提交)新数组
r.row('observations')('items')(0)
与前面类似,但现在进入observations.items
数组的第一个元素
.merge(…)
将调用它的对象与其参数合并,返回(不提交)新值
英语:获取指定的文档,用指定索引处更改的指定数组更新它,新值是与指定的说明
合并的旧值