【问题标题】:Bulk insert from Array in mongodb JavaScript console在 mongodb JavaScript 控制台中从数组批量插入
【发布时间】:2011-07-08 05:37:56
【问题描述】:

我正在尝试从数组的 MongoDB 控制台批量插入到集合中。

我想做类似的事情。

obj1 = {_id:ObjectId(),blabla:1};

obj2 = {_id:ObjectId(),blabla:2};

objs = [obj1, obj2];

db.test.insert(objs);

db.test.find()

> {"_id": ObjectId("xxxx"), "blabla": 1} > {"_id": ObjectId("xxxx"), "blabla": 2}

但是,它不是在集合中插入两个对象,而是将两个对象存储在一个列表中。

db.test.find()

> {"_id": ObjectId("xxx"), "0":{"_id": ObjectId("xxxx"), "blabla": 1}, "1":{"_id": ObjectId( "xxxx"), "blabla": 2} }

该功能似乎出现在其他驱动程序(如pymongo)上,但我无法从 mongodb 控制台中的 JavaScript 代码中找到实现该功能的方法。

【问题讨论】:

    标签: javascript mongodb


    【解决方案1】:

    批量在 2.6.6 中可用。

    var bulk=db.posts.initializeUnorderedBulkOp() ;
    bulk.insert(obj1) ; bulk.insert(obj2);...
    
    bulk.execute() ;
    

    【讨论】:

      【解决方案2】:

      将多个文档插入集合的功能已添加到 Mongo 命令 shell 版本 2.1+。现在您可以将文档数组插入到您的集合中。

      例子:

      db.users.insert([{name:'Jon', email:'Jon_Doe@mail.com'},{name:'Jane', email:'Jane_Doe@mail.com'}])
      

      有关更多信息,请查看这些 jira 封闭功能请求:

      https://jira.mongodb.org/browse/SERVER-3819

      https://jira.mongodb.org/browse/SERVER-2395

      【讨论】:

        【解决方案3】:

        您不能通过交互式命令外壳进行批量插入。但是 Mongo 附带了一个命令行工具,允许您以 JSON(您的最佳选择)、CSV 或二进制文件的形式导入多个记录。

        > mongoimport -h <host> -d <database> -c <collection> -u <user> -p <password> --file <input file> --jsonArray
        

        jsonArray 标志将允许您在使用 json 数组文件时插入多条记录。另一个重要的注意事项是确保文件以换行符结尾。否则最后一行将不被解析。

        【讨论】:

          【解决方案4】:
          objs.forEach(function(obj) { db.test.insert(obj) });
          

          【讨论】:

            【解决方案5】:

            对此有一个现有的功能请求。 http://jira.mongodb.org/browse/SERVER-2429

            【讨论】:

              【解决方案6】:

              简而言之:在 mongo 控制台级别上没有这样的批量插入 API。

              【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-05-21
              • 2012-09-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-11-07
              相关资源
              最近更新 更多