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

时间:2015-03-15 17:25:38

标签: python rethinkdb subdocument reql

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

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

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

如果保证"galleries"<category>都不存在,如何将图片附加到图库项目?让我们说我想在&#34;屏幕截图&#34;上添加图片。画廊。我是否必须首先进行两次查询并检查是否存在,还是可以原子地执行此操作?

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

1 个答案:

答案 0 :(得分:1)

你可以这样做:

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