Mongodb: как вставить, если он не существует


Вы можете использовать следующий синтаксис для вставки документа в коллекцию MongoDB, только если он еще не существует:

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

Этот конкретный код проверяет, имеет ли поле «команда» значение «Хорнетс». Если это значение существует, то ничего не произойдет.

Однако если этого значения не существует, то будет вставлен документ с конкретными значениями для полей «команда», «очки» и «подборы».

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: вставьте, если он не существует в MongoDB.

Допустим, у нас есть коллекция под названием Teams со следующими документами:

 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: Как посчитать отдельные значения в поле

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *