web-dev-qa-db-ja.com

Mongoose:Model.createとCollection.insertの違いは何ですか

MongoDBでバッチ挿入ジョブを実行したいのですが、mongooseで2つの方法を見つけました。

1つの方法はinsertを使用することです:

_dataArr = [
   {
       id: "",
       name: ""
   }
   {
       id: "",
       name: ""
   }
]
_

Collection.insert(dataArr)

別の方法は_Model.create_です。

_Model.create(dataArr)
_

どちらもバッチ挿入ジョブを完了できますが、それらの違いは何ですか?

どちらがより効率的ですか?

18
hh54188

Mongooseには Model.createCollection.insert があります(後者は厳密にはMongooseの一部ではなく、基礎となるMongoDBドライバーの一部です)。

Mongoose開発者によると、これらはドキュメントの配列で呼び出されたときに 基本的に同じ ですが、コードを見ると微妙な違いがあると思います(警告:コードを見ていませんthatので、以下について誤解されるかもしれません):

  • Model.createを使用すると、スキーマで宣言されたバリデーター/フックが呼び出されます。
  • Model.createは配列内の各ドキュメントに対して.saveを実行し、結果としてNデータベース呼び出しが発生します(Nは配列内の文書の数です)。 Collection.insertは、1つの大きなデータベース呼び出しを実行します。
28
robertklep

私が読んだことによると、Collection.insertはmongoDBドライバの機能であり、数百万などの大量のデータを挿入すると、mongoose検証をバイパスするコストではるかに高速です。

取り扱い注意

0
chuni

彼らは大まかに同じことを意味します。どちらでも使用できます。

0
Himansh