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 } )
Поле «команда» вже містить інформацію про «Мавс», жоден із документів не буде змінено.
Однак, скажімо, ми використовуємо наступний код, щоб вставити документ для команди “Hornets”:
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: як підрахувати різні значення в полі