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

Posted

技术标签:

【中文标题】如何附加到 RethinkDB 中可能不存在的子文档?【英文标题】:How to append to possibly non-existent subdocument in RethinkDB? 【发布时间】:2015-05-17 19:11:15 【问题描述】:

我有一个 JSON 模式可以验证这样的文档:


    "id": "abc123",
    ...
    "galleries": 
        <category>: 
            "items": [],
            "visible": true
        
    

验证不需要"galleries" 部分(某些文档可能没有图库),&lt;category&gt; 部分只是一个任意字符串,例如。 “截图”。

如果"galleries"&lt;category&gt; 都不能保证存在,我如何将图像附加到图库项目?假设我想将图像附加到“屏幕截图”画廊。我是否必须先进行两次查询并检查是否存在,或者是否可以原子地执行此操作?

编辑:我目前的解决方案是使用 .default() 查询游戏的 galleries 字段,然后使用 Python 处理生成的 dict 并使用合并进行更新。

【问题讨论】:

【参考方案1】:

你可以这样做:

r.table('tbl').get(abc123).update(galleries: <category>: items: r.row('galleries')(<category>)('items').default([]).append(NEW_ITEM))

【讨论】:

以上是关于如何附加到 RethinkDB 中可能不存在的子文档?的主要内容,如果未能解决你的问题,请参考以下文章

RethinkDB:​​更新文档

附加到 csh 中可能尚不存在的环境变量的简单方法

通过附加到新环境来检查 .rdata 文件的内容 - 可能吗?

SQL SERVER 2008 R2 数据库附加到 SQL server 2005,怎么整

如果它不存在,如何创建一个 CSV 文件,然后只附加到它 Python

linux下如何统计部分文件大小,有很多文件夹,还包含子文件件夹,统计出所有包含‘123’的文件的总大小