MongoDBでバッチ挿入ジョブを実行したいのですが、mongooseで2つの方法を見つけました。
1つの方法はinsert
を使用することです:
_dataArr = [
{
id: "",
name: ""
}
{
id: "",
name: ""
}
]
_
Collection.insert(dataArr)
別の方法は_Model.create
_です。
_Model.create(dataArr)
_
どちらもバッチ挿入ジョブを完了できますが、それらの違いは何ですか?
どちらがより効率的ですか?
Mongooseには Model.create
と Collection.insert
があります(後者は厳密にはMongooseの一部ではなく、基礎となるMongoDBドライバーの一部です)。
Mongoose開発者によると、これらはドキュメントの配列で呼び出されたときに 基本的に同じ ですが、コードを見ると微妙な違いがあると思います(警告:コードを見ていませんthatので、以下について誤解されるかもしれません):
Model.create
を使用すると、スキーマで宣言されたバリデーター/フックが呼び出されます。Model.create
は配列内の各ドキュメントに対して.save
を実行し、結果としてN
データベース呼び出しが発生します(N
は配列内の文書の数です)。 Collection.insert
は、1つの大きなデータベース呼び出しを実行します。私が読んだことによると、Collection.insertはmongoDBドライバの機能であり、数百万などの大量のデータを挿入すると、mongoose検証をバイパスするコストではるかに高速です。
取り扱い注意
彼らは大まかに同じことを意味します。どちらでも使用できます。