Arangodb 插入多行并使用 UPSERT
Arangodb insert multiple rows and using UPSERT
如何使用 UPSERT 在 arangodb 中插入多行?
集合包含防止插入重复文档的唯一索引。
没有唯一索引的多重插入工作正常,但我如何处理具有唯一索引的多重插入中的 update/replace?
像这样:
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`
谢谢。
ArangoDB支持UPSERT操作:https://docs.arangodb.com/3.3/AQL/Operations/Upsert.html
来自 ArangoDB 文档:
When using the UPDATE variant of the upsert operation, the found document will be partially updated, meaning only the attributes specified in updateExpression will be updated or added. When using the REPLACE variant of upsert, existing documents will be replaced with the contexts of updateExpression.
您可以使用 UPSERT update/replace/insert 多个记录,如下所示:
让我们首先使用 name
属性的唯一哈希索引将一些示例文档插入您的 collection
:
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
的值属性。
如何使用 UPSERT 在 arangodb 中插入多行? 集合包含防止插入重复文档的唯一索引。 没有唯一索引的多重插入工作正常,但我如何处理具有唯一索引的多重插入中的 update/replace?
像这样:
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`
谢谢。
ArangoDB支持UPSERT操作:https://docs.arangodb.com/3.3/AQL/Operations/Upsert.html
来自 ArangoDB 文档:
When using the UPDATE variant of the upsert operation, the found document will be partially updated, meaning only the attributes specified in updateExpression will be updated or added. When using the REPLACE variant of upsert, existing documents will be replaced with the contexts of updateExpression.
您可以使用 UPSERT update/replace/insert 多个记录,如下所示:
让我们首先使用 name
属性的唯一哈希索引将一些示例文档插入您的 collection
:
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
的值属性。