Mongodb: 存在しない場合に挿入する方法


ドキュメントがまだ存在しない場合にのみ、次の構文を使用して MongoDB のコレクションにドキュメントを挿入できます。

 db.teams.update(
	{
	  team: 'Hornets'
	}, 
	 {
	  $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'}
	 },
	 {upsert: true }
)

この特定のコードは、「チーム」フィールドの値が「ホーネッツ」であるかどうかをチェックします。この値が存在する場合、何も起こりません。

ただし、この値が存在しない場合は、「チーム」、「ポイント」、「リバウンド」フィールドの特定の値を含むドキュメントが挿入されます。

次の例は、この構文を実際に使用する方法を示しています。

例: MongoDB に存在しない場合は挿入します。

次のドキュメントを含むチームと呼ばれるコレクションがあるとします

 db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Spurs ", points: 35, rebounds: 12})
db.teams.insertOne({team: " Rockets ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Warriors ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Cavs ", points: 23, rebounds: 9})

次のコードを使用して、「Mavs」チームのドキュメントを挿入しようとするとします。

 db.teams.update(
	{
	  team: 'Mavs'
	}, 
	 {
	  $setOnInsert : {team: 'Mavs', points: '58', rebounds: '20'}
	 },
	 {upsert: true }
)

「チーム」フィールドにはすでに「マブス」の情報が含まれており、文書は何も変更されません。

ただし、次のコードを使用して「ホーネッツ」チームのドキュメントを挿入するとします。

 db.teams.update(
	{
	  team: 'Hornets'
	}, 
	 {
	  $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'}
	 },
	 {upsert: true }
)

「チーム」フィールドにはまだ「ホーネッツ」の情報が含まれていないため、各フィールドに指定した値を使用して新しいドキュメントがコレクションに追加されます。

更新されたコレクションは次のようになります。

 { _id: ObjectId("6203df361e95a9885e1e764a"),
  team: 'Mavs',
  points: 30,
  rebounds: 8 }
{ _id: ObjectId("6203df361e95a9885e1e764b"),
  team: 'Spurs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("6203df361e95a9885e1e764c"),
  team: 'Rockets',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("6203df361e95a9885e1e764d"),
  team: 'Warriors',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("6203df361e95a9885e1e764e"),
  team: 'Cavs',
  points: 23,
  rebounds: 9 }
{ _id: ObjectId("6203e17de42bfba74fc73325"),
  team: 'Hornets',
  dots: '58',
  rebounds: '20' }

「ホーネッツ」チーム用の新しいドキュメントが追加されたことに注意してください。

: $upsert関数の完全なドキュメントはここにあります。

追加リソース

次のチュートリアルでは、MongoDB で他の一般的な操作を実行する方法について説明します。

MongoDB: 新しいフィールドを追加する方法
MongoDB: フィールドを削除する方法
MongoDB: フィールド内の個別の値をカウントする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です