Mongodb: come inserirlo se non esiste
Puoi utilizzare la seguente sintassi per inserire un documento in una collection in MongoDB solo se non esiste già:
db.teams.update( { team: 'Hornets' }, { $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'} }, {upsert: true } )
Questo particolare codice controlla se il campo “team” ha il valore “Hornets”. Se questo valore esiste, non accadrà nulla.
Se però questo valore non esiste allora verrà inserito un documento con valori specifici per i campi “squadra”, “punti” e “rimbalzi”.
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: Inserisci se non esiste in MongoDB
Supponiamo di avere una raccolta denominata team con i seguenti documenti:
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})
Diciamo che utilizziamo il seguente codice per tentare di inserire un documento per il team “Mavs”:
db.teams.update( { team: 'Mavs' }, { $setOnInsert : {team: 'Mavs', points: '58', rebounds: '20'} }, {upsert: true } )
Il campo “squadra” contiene già le informazioni per i “Mav”, nessun documento verrà modificato.
Supponiamo però di utilizzare il seguente codice per inserire un documento per il team “Hornets”:
db.teams.update( { team: 'Hornets' }, { $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'} }, {upsert: true } )
Poiché il campo “squadra” non contiene già informazioni per gli “Hornets”, verrà aggiunto alla raccolta un nuovo documento con i valori che abbiamo specificato per ciascun campo.
Ecco come appare la raccolta aggiornata:
{ _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' }
Da notare che è stato aggiunto un nuovo documento per il team “Hornets”.
Nota : puoi trovare la documentazione completa per la funzione $upsert qui .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni in MongoDB:
MongoDB: come aggiungere un nuovo campo
MongoDB: come eliminare un campo
MongoDB: come contare valori distinti in un campo