RethinkDB:​​更新文档

Posted

技术标签:

【中文标题】RethinkDB:​​更新文档【英文标题】:RethinkDB: Updating documents 【发布时间】:2015-11-20 23:53:39 【问题描述】:

这是一个远景,但我想知道是否在 rethinkDB 中,假设我更新了一个文档。是否有一个神奇的函数,如果它是一个字符串或int的字段,它只是更新它,但如果字段的值是一个数组,它会将它附加到数组中?

【问题讨论】:

【参考方案1】:

在这种情况下,您需要使用 .branch 并在类型上进行分支。类似.update(function(row) return field: r.branch(row('field').typeOf().eq('ARRAY'), row('field').add([el]), el); )

【讨论】:

愚蠢的问题,但是 row('field') 是否适用于所有字段,还是我必须把它放在那里? 您需要将该示例中的 field 替换为您正在更新的特定字段。【参考方案2】:

有一个神奇的功能可以做类似的事情。 .forEach 具有添加数字、组合数组和删除字符串的未记录行为:

>>> r.expr([a:1, b:[2], c:"3", a:2, b:[4], c:"6"]).forEach(r.row)
"a": 3, "b": [2,4], "c": "3"

【讨论】:

字符串会发生什么?他们被添加了吗?

以上是关于RethinkDB:​​更新文档的主要内容,如果未能解决你的问题,请参考以下文章

RethinkDB:​​根据过滤字段过滤文档

rethinkdb - hasFields 查找具有多个多个缺失条件的所有文档

使用 RethinkDB 调用 cursor.changes() 时如何获取初始文档

RethinkDB:​​获取在任何字段中包含字符串的所有文档

RethinkDB 从文档中提取特定列

如何附加到 RethinkDB 中可能不存在的子文档?