2016-04-22 18 views

答えて

36

)、insertOne()とMongoDBの

  • db.collection.insert()上insertMany()メソッドのドキュメントで述べたように、コレクションに文書または文書を挿入し、単一のインサートの場合は WriteResultオブジェクトを返し、バルクインサートの場合はBulkWriteResultオブジェクトを返します。ドキュメントに記載さ

    > var d = db.collection.insert({"b": 3}) 
    > d 
    WriteResult({ "nInserted" : 1 }) 
    > var d2 = db.collection.insert([{"b": 3}, {'c': 4}]) 
    > d2 
    BulkWriteResult({ 
         "writeErrors" : [ ], 
         "writeConcernErrors" : [ ], 
         "nInserted" : 2, 
         "nUpserted" : 0, 
         "nMatched" : 0, 
         "nModified" : 0, 
         "nRemoved" : 0, 
         "upserted" : [ ] 
    }) 
    
  • db.collection.insertOne()は、コレクションに文書を挿入し、次のようになり、文書を返します。

    > var document = db.collection.insertOne({"a": 3}) 
    > document 
    { 
         "acknowledged" : true, 
         "insertedId" : ObjectId("571a218011a82a1d94c02333") 
    } 
    
  • db.collection.insertMany()コレクションに複数のドキュメントを挿入し、見えドキュメントを返しますこのような:

    > var res = db.collection.insertMany([{"b": 3}, {'c': 4}]) 
    > res 
    { 
         "acknowledged" : true, 
         "insertedIds" : [ 
           ObjectId("571a22a911a82a1d94c02337"), 
           ObjectId("571a22a911a82a1d94c02338") 
         ] 
    } 
    

私はそれぞれどのような状況で使用する必要がありますか?あなたのコレクションに複数のドキュメントを挿入したいとき、あなたはあなたのコレクションに単一の文書を挿入するたび .insertOne()メソッドを使用して.insertMany必要がありますので、

insert()方法は、主要なドライバーで推奨されていません。もちろん、これはドキュメントには言及されていませんが、実際には誰もアプリケーションをシェルに書き込んでいません。 updateOne,updateMany,deleteOne,deleteMany,findOneAndDelete,findOneAndUpdateおよびfindOneAndReplaceについても同様である。 Write Operations Overviewを参照してください。

+0

Nodeでは非推奨ですか? –

+0

@AbdulRehmanすべての正式なドライバーは、ドキュメントに記載されていてもそうです。 – styvane

4
  1. db.collection.insert()

    これは、コレクション内の1つの以上の文書を挿入することができます。構文:

    • シングルインサート:db.collection.insert({<document>});
    • 複数のインサート:

      db.collection.insert([ 、... ])。

    WriteResultオブジェクトを返します:WriteResult({ "nInserted" : 1 });

  2. db.collection.insertOne()

    それがコレクション内に正確に1文書を挿入することができます。その構文は、insert()の1つの挿入と同じです。

    { 
        "acknowledged" : true, 
        "insertedId" : ObjectId("56fc40f9d735c28df206d078") 
    } 
    
  3. db.collection.insertMany()

    それはあなたのコレクション内のドキュメントの配列を挿入することができます

    は、次のドキュメントを返します。構文:これらのすべての3つはまた、カスタムwriteConcernを定義しても、それが存在しない場合は、コレクションを作成することができ

    { 
        "acknowledged" : true, 
        "insertedIds" : [ 
         ObjectId("562a94d381cb9f1cd6eb0e1a"), 
         ObjectId("562a94d381cb9f1cd6eb0e1b"), 
         ObjectId("562a94d381cb9f1cd6eb0e1c") 
        ] 
    } 
    

db.collection.insertMany(
    { [ <document 1> , <document 2>, ... ] }); 

は、次のドキュメントを返します。挿入(の違いは何

+0

こんにちはayushgp、ありがとうございます。しかし、私はまだ疑いがあります。 insert()がすべての状況を解決する場合、なぜ私はinsertOne()またはinsertMany()を使用すべきですか? –

+1

作成したドキュメントのIDを他のIDに戻します。2.挿入するだけで、作成されたドキュメントの数に関する情報が表示されます。 – ayushgp

+1

@MarcosMendesまた、['explain'](https://docs.mongodb.org/manual/reference/method/db.collection.explain/#db.collection.explain)は' insert() 'としか互換性がありません。 insertManyとinsertOneを使用します。 – ayushgp

0

コレクションが存在しない場合、insertOne()メソッドはコレクションを作成します。同じデータを再度入力すると、mongodは重複を避けるために別の一意のIDを作成します。

1

エラー処理にも違いがあります。チェックはhereです。 insertコマンドは、成功とエラーの両方のケースでドキュメントを返します。しかし、insertOneとinsertManyコマンド例外をスローします。エラーは、返されたドキュメントを評価してエラーを特定するよりも、例外をコードで扱いやすくなります。おそらく、彼らがsstyvaneの答えに言及されているようにドライバーで非難される理由でしょう。

関連する問題