我有以下密钥的文件:
{
"uid": "art_canvas_fairytale_mod_main"
...
},
{
"uid": "art_canvas_landscape_rig_main"
...
},
我想做的是把第四部分带到" mod"或" rig"在这些情况下,添加一个键"类型"有这个价值。所以数据应该是这样的。
{
"uid": "art_canvas_fairytale_mod_main"
"type": "mod"
...
},
{
"uid": "art_canvas_landscape_rig_main"
"type": "rig"
...
},
我试过的是以下
UPSERT INTO test (key _k, value _v)
SELECT META().id _k, SPLIT(uid, "_")[3] _v
FROM test
WHERE CONTAINS(uid, "_mod_") OR CONTAINS(uid, "_rig_")
然而,这会将我文档中的所有数据覆盖到我想要的类型值。如何构造查询以便插入或更新"类型"键入适当的值而不覆盖文档中的所有数据
答案 0 :(得分:0)
如果您只是在现有文档中添加字段,请使用UPDATE
。 UPSERT
将创建或替换文档。
使用UPDATE
和SET
:
UPDATE test
SET type = SPLIT(uid, "_")[3]
WHERE SPLIT(uid, "_")[3] IN ["mod", "rig"]
RETURNING *;
由于RETURNING
子句:
[
{
"test": {
"type": "mod",
"uid": "art_canvas_fairytale_mod_main"
}
},
{
"test": {
"type": "rig",
"uid": "art_canvas_landscape_rig_main"
}
}
]