2016-03-07 17 views
17

MongoDB一括操作は2つのオプションがあります。MongoDBのreplaceOne()とupdateOne()の違いは何ですか?

  1. Bulk.find.updateOne()

    を一括操作のリストに単一のドキュメントの更新操作を追加します。操作は、既存の文書を置換するか、既存の文書の特定のフィールドを更新することができます。

  2. Bulk.find.replaceOne()

    一括操作リストに単一の文書交換作業を追加します。 Bulk.find()メソッドを使用して、置き換えるドキュメントを決定する条件を指定します。 Bulk.find.replaceOne()メソッドは、置き換えを単一のドキュメントに制限します。

文書によると、これらの2つの方法の両方が一致する文書を置き換えることができます。 updateOne()がより汎用的な方法であることを正しく理解していますか?replaceOne()とまったく同じ文書を置き換えることも、特定のフィールドを更新することもできますか?

答えて

19

replaceOne()の場合は、文書全体を置き換えることができますが、updateOne()は質問に記入したフィールドを更新することができます。

しかし、これはまた、あなたがアップデート演算子を使用することができることを意味:

https://docs.mongodb.org/manual/reference/operator/update/

そして、IIRC、あなたが「変更して何を意味replaceOne()

+2

を行うことはできませんupdateOne()を使用してスキーマを変更することができますスキーマ "? – caub

+2

replaceは、同じパラメータを使用して、ドキュメントを新しいものに置き換えます。更新すると、文書を構成するパラメータを追加/削除することができます。 – Hughzi

+3

ああ、だから、常に '_id'を置き換えてください。 – caub

関連する問題