【发布时间】:2020-04-02 18:10:01
【问题描述】:
根据 ArangoDB 文档,INSERT 操作适用于单个文档的插入。我有一个可能有数千个对象(文档)的数组。有没有办法通过单个查询将此文档数组插入到集合中?
【问题讨论】:
标签: arangodb
根据 ArangoDB 文档,INSERT 操作适用于单个文档的插入。我有一个可能有数千个对象(文档)的数组。有没有办法通过单个查询将此文档数组插入到集合中?
【问题讨论】:
标签: arangodb
我相信您误解了文档,其中说:
每个 AQL 查询每个集合只允许一个 INSERT 语句
每个 AQL 查询可以有多个 INSERT 语句(受上述限制等限制),每个语句都可以包含多个插入。
以下是作为一个 AQL 查询成功执行 1000 次插入的示例:
FOR n in 1..1000
INSERT {_from: "tasks/1", _to: CONCAT("tasks/", TO_STRING(n))} in depends
COLLECT WITH COUNT INTO c
RETURN c
另一种方法是使用arangosh 访问数据库:
您可以使用方法collection.insert(array) 将由多个文档组成的数组插入到集合中。
示例:将两个文档插入到集合“示例”中
db.example.insert([{ id : "doc1" }, { id : "doc2" }]);
[
{
"_id" : "example/12156601",
"_key" : "12156601",
"_rev" : "_WEnsap6---"
},
{
"_id" : "example/12156605",
"_key" : "12156605",
"_rev" : "_WEnsap6--_"
}
]
该方法记录在:https://docs.arangodb.com/3.2/Manual/DataModeling/Documents/DocumentMethods.html
【讨论】:
AQL v3.6 中的 BULK Insert 如下:
db.collection('collection_name').save([{ id : "doc1" }, { id : "doc2" }]);
如文档中所述,我已经在我的项目中使用 NodeJS 对其进行了测试。 https://www.arangodb.com/docs/stable/programs-arangosh-details.html#database-wrappers
【讨论】: