首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组第n个元素的REQL更新属性

数组第n个元素的REQL更新属性
EN

Stack Overflow用户
提问于 2018-08-26 20:34:08
回答 1查看 42关注 0票数 0

我有以下问题-

代码语言:javascript
复制
r.db("schema").table("table")
  .get("7201f732-4396-4201-9df4-099506a473b5")("observation")("items")(0)

它返回以下结果-

代码语言:javascript
复制
{
"description": null ,
"index":  "AF"
"name":  "ALL FARM BASE" ,
"opted": true ,
"parent": null ,
"properties": [
"AF 1" ,
"AF 2"
] ,
"sub_heads": [
"CB" ,
"AB" ,
"LB"
] ,
"type":  "HEAD"
}

查询应该足以解释数据结构,但我将以任何方式对其进行解释。该查询基本上首先获取所选文档的对象observation的属性数组items的元素。

现在如何更新上述查询的description键?

EN

回答 1

Stack Overflow用户

发布于 2018-08-28 10:19:07

数组确实很棘手……如下所示:

代码语言:javascript
复制
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")提供了我们将要处理的选择,合并将在选择中的每个文档上运行它的参数,将前一个文档与结果合并(这里的“on
  • .update(...)”表示不需要提供完整的对象,就像使用.replace(...)时一样),最后将更改提交到我们将在文档中工作的DB
  • { observations: { items: ... } }目标,我们将更改哪些键(这里只有一个,observations.items) -它是无损的(对象方面的),因为我们正在更新。not replacing
  • r.row('observations')('items')的目标是文档中的同一个点(在选择处理上下文中,r.row是“当前处理的文档”),但是这里我们使用的是ReQL功能,而不仅仅是使用普通的array
  • .merge(...)会改变它被调用的数组,用它的第二个参数提供的数据覆盖它的第一个参数给出的索引,并像前面那样返回(不提交)新的array
  • r.row('observations')('items')(0),但是现在走进observations.items and的第一个元素合并了它被调用的对象和它的参数。返回(不提交)新值

获取指定的文档,使用在指定索引处更改的指定数组更新它,新值是与指定description合并的旧数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52026295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档