Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 数组第n个元素的REQUL update属性_Arrays_Updates_Rethinkdb - Fatal编程技术网

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"
}
查询应该足以解释数据结构,但我将以任何方式解释它。查询基本上获取数组
项的第一个元素,这是所选文档的object
observation
属性


现在我如何更新上述查询的
说明
键?

数组确实很棘手。。。大概是这样的:

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(…)
    将调用它的对象与其参数合并,返回(不提交)新值
英语:获取指定的文档,用指定索引处更改的指定数组更新它,新值是与指定的
说明
合并的旧值