2016-04-27 16 views
10

Mongoコレクションの "root-level documents"にオブジェクトの配列をどのように挿入することができますか?MongoDBにオブジェクトの配列を挿入

私はdb.MyCollection.insert(array);を試しましたが、MongoDBの1つの生成された_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

欲しいあなたは、データベースへの1回の呼び出しで複数の文書を挿入する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

に "result/succesful"関数を追加しないようにするには、これに多くの "upsert"する方法がありますか?私は毎回配列をプッシュしたいが、ほとんどの項目は存在する – PirateApp

関連する問題