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