2011-03-03 48 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() ;