【问题标题】:(AQL) how to INSERT more than one document INTO a collection(AQL) 如何将多个文档插入到集合中
【发布时间】:2020-04-02 18:10:01
【问题描述】:

根据 ArangoDB 文档,INSERT 操作适用于单个文档的插入。我有一个可能有数千个对象(文档)的数组。有没有办法通过单个查询将此文档数组插入到集合中?

【问题讨论】:

    标签: arangodb


    【解决方案1】:

    我相信您误解了文档,其中说:

    每个 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
    
    【解决方案2】:

    另一种方法是使用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

    【讨论】:

      【解决方案3】:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-22
        • 2021-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多