update()
を使用します メソッドまたはsave()
MongoDBのドキュメントを更新する方法。
MongoDBでは、両方の update()
メソッドとsave()
メソッドを使用してドキュメントを更新できます。
update()
save()
がsave()
を実行している間、メソッドは既存の1つまたは複数のドキュメントの値を更新します。 メソッドは、ドキュメントをパラメータとして渡されたドキュメントに置き換えます。
ただし、 update()
メソッドは、渡されたパラメータに応じて、ドキュメント全体を置き換えることもできます。
update()
方法
update()
の例を次に示します。 メソッド。
まず、更新するレコードを選択しましょう:
db.musicians.find({ _id: 6 }).pretty()
結果:
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
ジェフは実際に歌うだけではありません。それでは、さらにいくつかの楽器を追加しましょう。 $ set
を使用します 単一のフィールドを更新する演算子。
db.musicians.update( { _id: 6 }, { $set:{ instrument : [ "Vocals", "Guitar", "Sitar" ] } } )
結果:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
別のクエリを実行すると、ドキュメントが指定どおりに更新されていることがわかります。
db.musicians.find({ _id: 6 }).pretty()
結果:
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : [ "Vocals", "Guitar", "Sitar" ], "born" : 1969 }
その他のオプション:
- フィールドが存在しない場合は、
$ set
新しいフィールドが型の制約に違反しない限り、オペレーターは指定された値で新しいフィールドを追加します。 -
{upsert:true}
を使用することもできます クエリに一致するドキュメントがない場合に新しいドキュメントを作成します。 -
{multi:true}
を使用できます クエリ条件を満たす複数のドキュメントを更新します。デフォルトでは、このオプションはfalse
に設定されています 、したがって、true
に設定しない場合、更新されるドキュメントは1つだけです。 。
save()
方法
save()
メソッドはupdate()
間のクロスです およびinsert()
。 save()
を使用する場合 メソッド、ドキュメントが存在する場合、それは更新されます。存在しない場合は作成されます。
_id
を指定しない場合 フィールドに、MongoDBは _id
を使用してドキュメントを作成します ObjectId
を含む 値( insert()
による 。
_id
を指定した場合 フィールドでは、 {upsert:true}
で更新を実行します 、つまり、クエリに一致するドキュメントがない場合は、新しいドキュメントが作成されます。
現在、
プロデューサー
にはドキュメントがありません。 コレクション。 save()
を使用して作成しましょう 方法:
db.producers.save({ _id: 1, name: "Bob Rock" })
結果:
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 1 })
ここで、 プロデューサー を検索すると コレクションには、新しく作成されたレコードが表示されます:
db.producers.find()
結果:
{ "_id" : 1, "name" : "Bob Rock" }