In MongoDB il db.collection.insert()
inserisce uno o più documenti in una raccolta.
La collection
part è il nome della raccolta in cui inserire il/i documento/i.
Esempio
Ecco un esempio di utilizzo di db.collection.insert()
per inserire più documenti in una raccolta denominata pets
:
db.pets.insert([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Risultato:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
Il db.collection.insert()
restituisce un oggetto che contiene lo stato dell'operazione di inserimento.
L'oggetto restituito dipende dal fatto che sia stato inserito un singolo documento o più documenti.
- Quando viene inserito un singolo documento, restituisce un
WriteResult
oggetto. - Quando viene inserita una matrice di documenti, restituisce un
BulkWriteResult
oggetto.
Possiamo vedere che l'esempio sopra ha restituito un BulkWriteResult
oggetto. Questo perché abbiamo aggiunto una serie di documenti. L'avrebbe fatto anche se l'array contenesse un solo elemento.
Ora se usiamo db.collection.find()
per guardare la collezione, vedremo i documenti appena aggiunti.
db.pets.find()
Risultato:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
In questo caso, i nostri tre documenti sono gli unici della collezione, quindi solo questi documenti sono stati restituiti.
Tuttavia, se la raccolta era ampia, potremmo utilizzare gli ID documento per restringere il risultato ai soli documenti che ci interessano.
db.pets.find({_id: {$in: [1,2,3]}})
Risultato:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
E se la collezione non esiste?
Se la raccolta non esiste, viene creata e i documenti vengono aggiunti ad essa.
Se la raccolta esiste già, i documenti vengono semplicemente aggiunti ad essa (a condizione che il loro _id
i valori non sono in conflitto con quelli esistenti).
Quando ho creato questo esempio, la raccolta non esisteva e quindi l'operazione di inserimento l'ha creata.
Il _id
Campo
Il _id
field è un campo identificatore univoco in MongoDB.
Come mostrato nell'esempio precedente, puoi fornire il tuo _id
campo nel documento. In tal caso, il suo valore deve essere univoco all'interno della raccolta. Questo perché il tuo _id
verrà utilizzato come identificatore univoco del documento.
Ecco un esempio di inserimento di un documento senza fornire il _id
campi.
db.pets.insert(
{ name: "Bruce", type: "Bat" }
)
Risultato:
WriteResult({ "nInserted" : 1 })
Nota che in questo caso il metodo restituisce un WriteResult
oggetto invece di un BulkWriteResult
oggetto. Questo perché abbiamo inserito un singolo documento (e non era in un array).
Ora esaminiamo di nuovo la collezione.
db.pets.find()
Risultato:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : ObjectId("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }
Possiamo vedere che il nostro nuovo documento è incluso nella raccolta e ha un _id
campo con un valore generato automaticamente.
Il ordered
Parametro
Il db.collection.insert()
accetta anche un ordered
parametro. Questo è un parametro booleano con un valore predefinito di true
.
Il ordered
il parametro specifica se l'operazione di inserimento deve essere ordinata o annullata.
Se ordered
è impostato su false
, i documenti vengono inseriti in un formato non ordinato e possono essere riordinati da mongod
per aumentare le prestazioni.
Con gli inserti ordinati, se si verifica un errore durante l'inserimento di uno dei documenti, MongoDB ritorna in errore senza elaborare i documenti rimanenti nell'array.
Con inserimenti non ordinati, se si verifica un errore durante l'inserimento di uno dei documenti, MongoDB continua a inserire i documenti rimanenti nell'array.
Maggiori informazioni
Il db.collection.insert()
accetta anche un writeConcern
argomento, che descrive il livello di riconoscimento richiesto da MongoDB per le operazioni di scrittura.
Consulta la documentazione di MongoDB per db.collection.insert()
per ulteriori informazioni.