Ricerca…


Sintassi

  • inserire ( documento o serie di documenti )
  • insertOne ('document', {writeConcern: 'document'}})
  • insertMany ({[documento 1, documento 2, ...]}, {writeConcern: documento, ordinato: booleano})
  • trova ( query , proiezione )
  • findOne ( query , proiezione )
  • aggiornamento ( query , aggiornamento )
  • updateOne ( query , aggiornamento , {upsert: boolean, writeConcern: document})
  • updateMany ( query , aggiornamento , {upsert: boolean, writeConcern: document})
  • replaceOne ( query , replacement , {upsert: boolean, writeConcern: document})
  • rimuovere ( query , justOne )
  • findAndModify ( query , ordinamento , aggiornamento , opzioni [facoltativo] )

Osservazioni

L'aggiornamento e l'eliminazione di un documento dovrebbero essere eseguiti con attenzione. Poiché l'operazione potrebbe influire su più documenti.

Creare

db.people.insert({name: 'Tom', age: 28});

O

db.people.save({name: 'Tom', age: 28});

La differenza con save è che se il documento passato contiene un campo _id , se esiste già un documento con tale _id verrà aggiornato invece di essere aggiunto come nuovo.

Due nuovi metodi per inserire documenti in una raccolta, in MongoDB 3.2.x: -

Usa insertOne per inserire solo un record: -

db.people.insertOne({name: 'Tom', age: 28});

Utilizzare insertMany per inserire più record: -

db.people.insertMany([{name: 'Tom', age: 28},{name: 'John', age: 25}, {name: 'Kathy', age: 23}])

Si noti che l' insert è evidenziato come deprecato in ogni driver di lingua ufficiale dalla versione 3.0. La distinzione principale è che i metodi di shell sono rimasti indietro rispetto agli altri driver nell'implementazione del metodo. La stessa cosa vale per tutti gli altri metodi CRUD

Aggiornare

Aggiorna l' intero oggetto:

db.people.update({name: 'Tom'}, {age: 29, name: 'Tom'})

// New in MongoDB 3.2
db.people.updateOne({name: 'Tom'},{age: 29, name: 'Tom'}) //Will replace only first matching document.

db.people.updateMany({name: 'Tom'},{age: 29, name: 'Tom'}) //Will replace all matching documents.

O semplicemente aggiorna un singolo campo di un documento. In questo caso l' age :

db.people.update({name: 'Tom'}, {$set: {age: 29}})

È inoltre possibile aggiornare più documenti contemporaneamente aggiungendo un terzo parametro. Questa query aggiornerà tutti i documenti in cui il nome è uguale a Tom :

db.people.update({name: 'Tom'}, {$set: {age: 29}}, {multi: true})

// New in MongoDB 3.2
db.people.updateOne({name: 'Tom'},{$set:{age: 30}) //Will update only first matching document.

db.people.updateMany({name: 'Tom'},{$set:{age: 30}}) //Will update all matching documents.

Se un nuovo campo è in arrivo per l'aggiornamento, quel campo verrà aggiunto al documento.

db.people.updateMany({name: 'Tom'},{$set:{age: 30, salary:50000}})// Document will have `salary` field as well.

Se è necessario sostituire un documento,

db.collection.replaceOne({name:'Tom'}, {name:'Lakmal',age:25,address:'Sri Lanka'})

può essere utilizzato.

Nota : i campi che utilizzi per identificare l'oggetto verranno salvati nel documento aggiornato. I campi che non sono definiti nella sezione di aggiornamento verranno rimossi dal documento.

Elimina

Elimina tutti i documenti che corrispondono al parametro di query:

// New in MongoDB 3.2
db.people.deleteMany({name: 'Tom'})

// All versions
db.people.remove({name: 'Tom'})

O solo uno

// New in MongoDB 3.2
db.people.deleteOne({name: 'Tom'})

// All versions
db.people.remove({name: 'Tom'}, true)

Il metodo remove() di MongoDB. Se si esegue questo comando senza alcun argomento o senza argomenti vuoti, verranno rimossi tutti i documenti dalla raccolta.

db.people.remove();

o

db.people.remove({});

Leggere

Query per tutti i documenti nella raccolta people che hanno un campo name con un valore di 'Tom' :

db.people.find({name: 'Tom'})

O solo il primo:

db.people.findOne({name: 'Tom'})

È inoltre possibile specificare quali campi restituire passando un parametro di selezione campo. Quanto segue esclude il campo _id e include solo il campo age :

db.people.find({name: 'Tom'}, {_id: 0, age: 1})

Nota: per impostazione predefinita, verrà restituito il campo _id , anche se non lo chiedi. Se si desidera di non ottenere il _id indietro, si può solo seguire l'esempio precedente e chiedere il _id da escludere specificando _id: 0 (o _id: false ) .Se si desidera trovare record di sub come oggetto l'indirizzo contiene paese , città, ecc.

db.people.find({'address.country': 'US'})

e specificare il campo anche se richiesto

db.people.find({'address.country': 'US'}, {'name': true, 'address.city': true})Remember that the result has a `.pretty()` method that pretty-prints resulting JSON:

db.people.find().pretty()

Altri operatori di aggiornamento

Puoi utilizzare altri operatori oltre a $set durante l'aggiornamento di un documento. L'operatore $push ti consente di inserire un valore in un array, in questo caso aggiungeremo un nuovo nickname alla matrice dei nicknames .

db.people.update({name: 'Tom'}, {$push: {nicknames: 'Tommy'}})
// This adds the string 'Tommy' into the nicknames array in Tom's document.

L'operatore $pull è l'opposto di $push , puoi estrarre elementi specifici dagli array.

db.people.update({name: 'Tom'}, {$pull: {nicknames: 'Tommy'}})
// This removes the string 'Tommy' from the nicknames array in Tom's document.

L'operatore $pop consente di rimuovere il primo o l'ultimo valore da un array. Diciamo che il documento di Tom ha una proprietà chiamata fratelli che ha il valore ['Marie', 'Bob', 'Kevin', 'Alex'] .

db.people.update({name: 'Tom'}, {$pop: {siblings: -1}})
// This will remove the first value from the siblings array, which is 'Marie' in this case.


db.people.update({name: 'Tom'}, {$pop: {siblings: 1}})
// This will remove the last value from the siblings array, which is 'Alex' in this case.

"multi" Parametro durante l'aggiornamento di più documenti

Per aggiornare più documenti in una raccolta, impostare l'opzione multipla su true.

db.collection.update(
   query,
   update,
   {
     upsert: boolean,
     multi: boolean,
     writeConcern: document
   }
)

multi è facoltativo. Se impostato su true, aggiorna più documenti che soddisfano i criteri di query. Se impostato su false, aggiorna un documento. Il valore predefinito è falso.

db.mycol.find () {"_id": ObjectId (598354878df45ec5), "title": "Panoramica di MongoDB"} {"_id": ObjectId (59835487adf45ec6), "title": "Panoramica NoSQL"} {"_id": ObjectId (59835487adf45ec7), "title": "Panoramica dei punti tutorial"}

db.mycol.update ({'title': 'MongoDB Overview'}, {$ set: {'title': 'New MongoDB Tutorial'}}, {multi: true})

Aggiornamento di documenti incorporati.

Per il seguente schema:

{name: 'Tom', age: 28, marks: [50, 60, 70]}

Aggiorna i marchi di Tom a 55 dove i voti sono 50 (usa l'operatore posizionale $):

db.people.update({name: "Tom", marks: 50}, {"$set": {"marks.$": 55}})

Per il seguente schema:

{name: 'Tom', age: 28, marks: [{subject: "English", marks: 90},{subject: "Maths", marks: 100}, {subject: "Computes", marks: 20}]}

Aggiorna i marchi inglesi di Tom a 85:

db.people.update({name: "Tom", "marks.subject": "English"},{"$set":{"marks.$.marks": 85}})

Spiegando sopra l'esempio:

Usando {name: "Tom", "marks.subject": "English"} otterrai la posizione dell'oggetto nell'array dei marchi, dove il soggetto è l'inglese. In "marks. $. Marks", $ viene utilizzato per aggiornare in quella posizione dell'array Mark

Aggiorna valori in una matrice

L'operatore $ posizionale identifica un elemento in una matrice da aggiornare senza specificare esplicitamente la posizione dell'elemento nella matrice.

Considera una raccolta studenti con i seguenti documenti:

{ "_id" : 1, "grades" : [ 80, 85, 90 ] }
{ "_id" : 2, "grades" : [ 88, 90, 92 ] }
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }

Per aggiornare da 80 a 82 nella matrice gradi nel primo documento, utilizzare l'operatore $ posizionale se non si conosce la posizione dell'elemento nell'array:

db.students.update(
   { _id: 1, grades: 80 },
   { $set: { "grades.$" : 82 } }
)


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow