2011-03-03 69 views
4

我试图从一个数组的MongoDB控制台批量插入到一个集合中。从mongodb中的数组批量插入JavaScript控制台

我想做类似的事情。

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

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

objs = [obj1,obj2];

db.test.insert(objs);

db.test.find()

> { “_id”:的ObjectId( “XXXX”), “布拉布拉”:1} > { “_id”:的ObjectId( “XXXX”),“布拉布拉“:2}

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

db.test.find()

> { “_id”:的ObjectId( “XXX”), “0”:{ “_编码”:的ObjectId( “XXXX”), “布拉布拉”: 1}, “1”:{ “_编码”:的ObjectId( “XXXX”), “布拉布拉”:2}}

即功能似乎呈现对其它驱动程序(如pymongo),但我不能在JavaScript代码中找到从mongodb控制台执行此操作的方法。

回答

-3

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

+2

这个答案不再有效,你可以在Ida N的回复中看到(http://stackoverflow.com/a/12714881/1377224)。 – philnate 2013-04-19 21:24:49

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

无法通过交互式命令外壳做批量插入。但是Mongo提供了一个命令行工具,允许您将多个记录导入为JSON(最佳选项),CSV或Binary。

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

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

1

散装处于2.6.6可用。

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

bulk.execute() ;