在mongodb JavaScript控制台中从Array批量插入

时间:2011-03-03 17:18:56

标签: javascript mongodb

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

我想做类似的事情。

  

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

     

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

     

objs = [obj1,obj2];

     

db.test.insert(OBJ文件);

     

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),但我无法通过JavaScript代码从mongodb控制台找到一种方法。

6 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:2)

答案 2 :(得分:1)

objs.forEach(function(obj) { db.test.insert(obj) });

答案 3 :(得分:1)

批量版本可在2.6.6。

中找到
var bulk=db.posts.initializeUnorderedBulkOp() ;
bulk.insert(obj1) ; bulk.insert(obj2);...

bulk.execute() ;

答案 4 :(得分:0)

您无法通过交互式命令shell执行批量插入。但Mongo附带了一个命令行工具,允许您将多个记录导入为JSON(最佳选项),CSV或二进制。

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

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

答案 5 :(得分:-3)

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