2016-04-27 27 views
10

Tôi tự hỏi làm thế nào tôi có thể chèn mảng đối tượng vào bộ sưu tập Mongo "tài liệu cấp gốc" với các giá trị _id được xác định trước.Chèn mảng đối tượng vào MongoDB

Tôi đã thử db.MyCollection.insert(array); nhưng nó tạo tài liệu lồng nhau trong một _id được tạo duy nhất trong MongoDB.

var array = [ 

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


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

db.MyCollection.insert (mảng);

enter image description here

Những gì tôi muốn

enter image description here

+1

'db.MyCollection.insert (mảng) 'nên làm việc. Bạn có nhận được thông báo lỗi nào không? – styvane

+0

Chèn quy trình hoạt động và tôi có dữ liệu trong bộ sưu tập nhưng tôi muốn có đối tượng ở cấp "gốc" và bây giờ chúng được chèn dưới "0": {}, "1": {} v.v. Tôi muốn chèn tất cả các đối tượng của tôi dưới dạng tài liệu "root-level" với giá trị _id – justdiehard

+0

Với tài liệu bạn hiển thị cho chúng tôi, bạn không thể nhận được kết quả đó. – styvane

Trả lời

0

Bạn có thể sử dụng MongoDB Bulk để chèn nhiều tài liệu trong một cuộc gọi duy nhất để cơ sở dữ liệu.

lặp đầu tiên trên mảng của bạn và gọi phương thức bulk cho từng hạng mục:

bulk.insert(item) 

Sau khi vòng lặp, gọi execute:

bulk.execute() 

Hãy nhìn vào các tài liệu tham khảo nhiều để tìm hiểu thêm.

3

Tại sao không lặp qua các đối tượng mảng, và chèn chúng cùng một lúc?

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

Tôi đã làm điều này, nhưng nó không cho phép tôi thêm "kết quả/thành công" chức năng vào chèn – justdiehard

0

db.collection.insertMany() là những gì bạn cần (hỗ trợ từ 3.2):

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

đầu ra:

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

là có một cách để "upsert" nhiều tương tự như thế này? tôi muốn đẩy một mảng mọi lúc nhưng hầu hết các mục sẽ tồn tại – PirateApp

Các vấn đề liên quan