如何使用UPSERT将多行插入到arangodb中?集合包含防止插入重复文档的唯一索引。在没有唯一索引的情况下,多个insert工作得很好,但是如何用唯一索引处理多个insert中的更新/替换呢?
就像这样:
INSERT [{doc1},{doc2},{doc3}]
IN collection
UPDATE {} // when duplicate per document
更新1
SQL如下所示:
INSERT INTO table(name, value)
VALUES('a', '1'), ('b', 2), ('c', 3)
ON DUPLICATE KEY UPDATE name=`value`
谢谢。
发布于 2019-03-10 16:01:11
ArangoDB支持UPSERT操作:https://docs.arangodb.com/3.3/AQL/Operations/Upsert.html
来自ArangoDB文档:
当使用upsert操作的UPDATE变体时,找到的文档将被部分更新,这意味着只有在updateExpression中指定的属性才会被更新或添加。当使用upsert的替换变体时,现有的文档将被updateExpression的上下文所替代。
您可以使用UPSERT更新/替换/插入多个记录,如下所示:
让我们首先使用collection
属性的惟一散列索引将几个示例文档插入到name
中:
FOR doc in [
{ "name": "Doc 1", "value": 1 },
{ "name": "Doc 2", "value": 1 },
{ "name": "Doc 3", "value": 1 }]
INSERT doc IN collection
现在,如果要执行批处理重新插入,可以运行以下AQL:
FOR doc in [
{ "name": "Doc 2", "value": 2 },
{ "name": "Doc 3", "value": 2 },
{ "name": "Doc 4", "value": 1 }
]
UPSERT { "name": doc.name }
INSERT doc
UPDATE { "value": doc.value } in collection
上面的AQL查询插入一个新的Doc 4
文档,并更新Doc 2
和Doc 3
的value属性。
https://stackoverflow.com/questions/55089367
复制相似问题