Вы можете использовать следующий синтаксис для вставки документа в коллекцию в MongoDB, только если он еще не существует:
db.teams.update(
{
team : 'Hornets'
},
{
$setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'}
},
{upsert: true }
)
Этот конкретный код проверяет, имеет ли поле «команда» значение «Шершни». Если это значение существует, то ничего не произойдет.
Однако, если это значение не существует, будет вставлен документ с определенными значениями для полей «команда», «очки» и «подборы».
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: вставить, если не существует в MongoDB
Предположим, у нас есть коллекция под названием team со следующими документами:
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',
points: '58',
rebounds: '20' }
Обратите внимание, что для команды «Шершни» добавлен новый документ.
Примечание.Полную документацию по функции $upsert можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:
MongoDB: как добавить новое поле
MongoDB: как удалить поле
MongoDB: как подсчитать различные значения в поле