Suche…


Syntax

  • Einfügen ( Dokument oder Array von Dokumenten )
  • insertOne ('document', {writeConcern: 'document'})
  • insertMany ({[Dokument 1, Dokument 2, ...]}, {writeConcern: Dokument, sortiert: boolean})
  • find ( Abfrage , Projektion )
  • findOne ( Abfrage , Projektion )
  • Update ( Abfrage , Update )
  • updateOne ( Abfrage , Aktualisierung , {upsert: boolean, writeConcern: document})
  • updateMany ( Abfrage , Aktualisierung , {upsert: boolean, writeConcern: document})
  • replaceOne ( Abfrage , Ersetzung , {upsert: boolean, writeConcern: document})
  • entfernen ( Abfrage , justOne )
  • findAndModify ( Abfrage , Sortierung , Aktualisierung , Optionen [optional] )

Bemerkungen

Das Aktualisieren und Löschen eines Dokuments sollte sorgfältig durchgeführt werden. Da kann sich der Vorgang auf mehrere Dokumente auswirken.

Erstellen

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

Oder

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

Der Unterschied zum save ist, dass, wenn das übergebene Dokument ein _id Feld enthält, wenn ein Dokument bereits mit dieser _id es aktualisiert wird, anstatt als neu hinzugefügt zu werden.

Zwei neue Methoden zum Einfügen von Dokumenten in eine Sammlung in MongoDB 3.2.x: -

Verwenden Sie insertOne , um nur einen Datensatz einzufügen: -

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

Verwenden Sie insertMany , um mehrere Datensätze einzufügen: -

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

Beachten Sie, dass die insert seit Version 3.0 in jedem offiziellen Sprachentreiber als veraltet markiert ist. Der volle Unterschied besteht darin, dass die Shell-Methoden bei der Implementierung der Methode tatsächlich hinter den anderen Treibern zurückgeblieben sind. Das gleiche gilt für alle anderen CRUD-Methoden

Aktualisieren

Aktualisieren Sie das gesamte Objekt:

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.

Oder aktualisieren Sie einfach ein einzelnes Feld eines Dokuments. In diesem Fall age :

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

Sie können auch mehrere Dokumente gleichzeitig aktualisieren, indem Sie einen dritten Parameter hinzufügen. Diese Abfrage aktualisiert alle Dokumente, bei denen der Name Tom entspricht:

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.

Wenn ein neues Feld zur Aktualisierung erscheint, wird dieses Feld dem Dokument hinzugefügt.

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

Wenn ein Dokument ersetzt werden muss,

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

kann verwendet werden.

Hinweis : Felder, die Sie zur Identifizierung des Objekts verwenden, werden im aktualisierten Dokument gespeichert. Felder, die nicht im Aktualisierungsabschnitt definiert sind, werden aus dem Dokument entfernt.

Löschen

Löscht alle Dokumente, die dem Abfrageparameter entsprechen:

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

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

Oder nur eine

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

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

MongoDBs remove() Methode. Wenn Sie diesen Befehl ohne ein Argument oder ohne ein leeres Argument ausführen, werden alle Dokumente aus der Sammlung entfernt.

db.people.remove();

oder

db.people.remove({});

Lesen

Abfrage für alle Dokumente in der people Sammlung , die einen haben name Feld mit einem Wert von 'Tom' :

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

Oder nur der erste:

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

Sie können auch angeben, welche Felder zurückgegeben werden sollen, indem Sie einen Feldauswahlparameter übergeben. Folgendes schließt das _id Feld aus und enthält nur das age Feld:

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

Hinweis: Standardmäßig wird das Feld _id zurückgegeben, auch wenn Sie nicht danach fragen. Wenn Sie die _id zurückbekommen _id , folgen Sie einfach dem vorherigen Beispiel und fordern Sie die _id unter Angabe von _id: 0 (oder _id: false ) aus , Stadt usw.

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

& bei Bedarf auch Feld angeben

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()

Weitere Update-Operatoren

Sie können bei der Aktualisierung eines Dokuments neben $set andere Operatoren verwenden. Mit dem $push Operator können Sie einen Wert in ein Array verschieben. In diesem Fall fügen Sie dem nicknames Array einen neuen Kurznamen hinzu.

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

Der $pull Operator ist das Gegenteil von $push . Sie können bestimmte Elemente aus Arrays ziehen.

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

Mit dem Operator $pop können Sie den ersten oder den letzten Wert aus einem Array entfernen. Angenommen, Toms Dokument hat eine Eigenschaft namens Geschwister, die den Wert ['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" Parameter beim Aktualisieren mehrerer Dokumente

Um mehrere Dokumente in einer Sammlung zu aktualisieren, setzen Sie die Multi-Option auf true.

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

multi ist optional. Wenn der Wert auf true gesetzt ist, werden mehrere Dokumente aktualisiert, die die Abfragekriterien erfüllen. Bei Festlegung auf "false" wird ein Dokument aktualisiert. Der Standardwert ist false.

db.mycol.find () {"_id": ObjectId (598354878df45ec5), "title": "MongoDB Overview"} {"_id": ObjectId (59835487adf45ec6), "title": "NoSQL Overview"} {"_id": ObjectId (59835487adf45ec7), "title": "Übersicht über Lernprogramme"}

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

Update eingebetteter Dokumente.

Für das folgende Schema:

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

Tom's Marken auf 55 aktualisieren, wobei Marken 50 sind (Verwenden Sie den Positionsoperator $):

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

Für das folgende Schema:

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

Aktualisieren Sie die englischen Markierungen von Tom auf 85:

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

Erklärendes Beispiel oben:

Wenn Sie {name: "Tom", "marks.subject": "English"} verwenden, erhalten Sie die Position des Objekts im Markierungen-Array, wobei das Subjekt Englisch ist. In "marks. $. Marks" wird $ verwendet, um an dieser Position des Marken-Arrays zu aktualisieren

Werte in einem Array aktualisieren

Der positional $ -Operator identifiziert ein Element in einem Array, das aktualisiert werden soll, ohne die Position des Elements im Array explizit anzugeben.

Betrachten Sie eine Sammlung Schüler mit den folgenden Dokumenten:

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

Verwenden Sie zum Aktualisieren von 80 bis 82 im Notenarray im ersten Dokument den Operator positional $, wenn Sie die Position des Elements im Array nicht kennen:

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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow