[英]Arangodb insert multiple rows and using UPSERT
如何使用UPSERT在arangodb中插入多行? 集合包含唯一索引,可以防止插入重復的文檔。 沒有唯一索引的情況下,多次插入工作正常,但是如何處理具有唯一索引的多次插入中的更新/替換?
像這樣:
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文檔中:
當使用upsert操作的UPDATE變體時,找到的文檔將被部分更新,這意味着將僅更新或添加在updateExpression中指定的屬性。 當使用upsert的REPLACE變體時,現有文檔將被updateExpression的上下文替換。
您可以使用UPSERT更新/替換/插入多個記錄,如下所示:
讓我們首先使用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
value屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.