2016-04-27 193 views
10

我想知道如何将对象数组插入到具有自己的预定义_id值的Mongo集合“根级文档”中。将对象数组插入到MongoDB中

我试过db.MyCollection.insert(array);,但它在MongoDB中的一个生成的_id下创建嵌套文档。

var array = [ 

     { _id: 'rg8nsoqsxhpNYho2N', 
     goals: 0, 
     assists: 1, 
     total: 1     }, 


     { _id: 'yKMx6sHQboL5m8Lqx', 
     goals: 0, 
     assists: 1, 
     total: 1     }]; 

db.MyCollection.insert(数组);

enter image description here

我想

enter image description here

+1

'db.MyCollection.insert(阵列)'应该工作。你是否收到任何错误讯息? – styvane

+0

插入过程有效,我正在收集数据,但我希望在“根级别”具有对象,现在它们被插入到“0”下:{},“1”:{}等等。我想用我的_id值将所有对象作为“根级”文档插入 – justdiehard

+0

使用您向我们显示的文档,您无法获得该结果。 – styvane

回答

0

什么,你可以使用MongoDB Bulk到数据库中的一个单一的通话插入多个文件。

在你的阵列的第一迭代,并调用bulk方法为每个项目:

bulk.insert(item) 

循环后,调用execute

bulk.execute() 

在审过的文档,看看以了解详情。

3

为什么不能在数组对象迭代,并插入一个在一个时间?

array.forEach((item) => db.MyCollection.insert(item)); 
+0

我已经这样做了,但它不让我添加“结果/成功”功能插入 – justdiehard

0

db.collection.insertMany()是你所需要的(从3.2支持):

db.users.insertMany(
    [ 
    { name: "bob", age: 42, status: "A", }, 
    { name: "ahn", age: 22, status: "A", }, 
    { name: "xi", age: 34, status: "D", } 
    ] 
) 

输出:

{ 
    "acknowledged" : true, 
    "insertedIds" : [ 
     ObjectId("57d6c1d02e9af409e0553dff"), 
     ObjectId("57d6c1d02323d119e0b3c0e8"), 
     ObjectId("57d6c1d22323d119e0b3c16c") 
    ] 
} 
+0

有没有办法“插入”许多类似于此?我想每次都推一个数组,但大多数项目都会存在 – PirateApp