加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何更新嵌入式文件?

发布时间:2020-12-12 07:45:37 所属栏目:MsSql教程 来源:网络整理
导读:如何将第二条评论的文本更新为“新内容” { name: 'Me',comments: [{ "author": "Joe S.","text": "I'm Thirsty" },{ "author": "Adder K.","text": "old content" }]} 解决方法 更新嵌入式阵列基本上包括两个步骤: 1. 您创建整个阵列的修改版本.您可以使用
如何将第二条评论的文本更新为“新内容”
{
  name: 'Me',comments: [{
        "author": "Joe S.","text": "I'm Thirsty"
    },{
        "author": "Adder K.","text":  "old content"
    }]
}

解决方法

更新嵌入式阵列基本上包括两个步骤:

1.
您创建整个阵列的修改版本.您可以使用多个操作来修改阵列,它们列在此处:http://www.rethinkdb.com/api/#js:document_manipulation-insert_at

在您的示例中,如果您知道要更新的文档是数组的第二个元素,那么您可以编写类似的内容

oldArray.changeAt(1,oldArray.nth(1).merge({text: "new content"}))

生成新数组. 1这里是第二个元素的索引,因为索引从0开始.如果您不知道索引,可以使用indexesOf函数来搜索数组中的特定条目.这里发生了多件事:changeAt替换了数组的元素.这里,索引1处的元素被oldArray.nth(1).merge({text:“new content”})的结果替换.在该值中,我们首先使用oldArray.nth(1)选择我们想要基于新元素的元素.这为我们提供了JSON对象

{
    "author": "Adder K.","text":  "old content"
}

通过使用合并,我们可以用新值替换此对象的文本字段.

2.
既然我们可以构造新对象,我们仍然必须将它实际存储在原始行中.为此,我们使用update并将“comments”字段设置为新数组.我们可以通过ReQL r.row变量访问行中旧数组的值.总的来说,查询将如下所示:

r.table(...).get(...).update({
    comments: r.row('comments').changeAt(1,r.row('comments').nth(1).merge({text: "new content"}))
  }).run(conn,callback)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读