insertOne ·
insertMany ·
find ·
findOne ·
updateOne ·
updateMany ·
deleteOne ·
deleteMany
MongoDB ist eine dokumentenorientierte NoSQL-Datenbank. Diese Befehle sind die Grundlage für jede Anwendung, die Daten in MongoDB speichert, abfragt, aktualisiert oder löscht.
insertOne fügt ein einzelnes Dokument in eine Collection ein. insertMany fügt mehrere Dokumente auf einmal ein. Jedes Dokument erhält automatisch ein eindeutiges _id-Feld.
_id vom Typ ObjectId. Sie können aber auch eigene IDs vergeben, wenn Sie diese selbst verwalten möchten.
find gibt einen Cursor auf alle passenden Dokumente zurück. findOne gibt nur das erste passende Dokument zurück. Mit pretty() wird die Ausgabe formatiert.
| Operator | Beschreibung | Beispiel |
|---|---|---|
| { $eq: value } | Gleich (Standard) | { preis: { $eq: 100 } } |
| { $gt: value } | Größer als | { preis: { $gt: 100 } } |
| { $gte: value } | Größer oder gleich | { preis: { $gte: 100 } } |
| { $lt: value } | Kleiner als | { preis: { $lt: 100 } } |
| { $lte: value } | Kleiner oder gleich | { preis: { $lte: 100 } } |
| { $in: [value1, value2] } | In einer Liste | { kategorie: { $in: ["Elektronik", "Bücher"] } } |
| { $regex: /muster/ } | Regulärer Ausdruck | { name: { $regex: /book/i } } |
| { $exists: true } | Feld existiert | { rabatt: { $exists: true } } |
| { $and: [b1, b2] } | Logisches UND | { $and: [ { preis: { $gt: 50 } }, { kategorie: "Elektronik" } ] } |
| { $or: [b1, b2] } | Logisches ODER | { $or: [ { preis: { $lt: 10 } }, { preis: { $gt: 100 } } ] } |
find() gibt einen Cursor zurück. Mit .toArray() können Sie das Ergebnis als Array erhalten (im Node.js-Treiber). In der Mongo-Shell wird der Cursor automatisch iteriert.
updateOne aktualisiert das erste passende Dokument. updateMany aktualisiert alle passenden Dokumente. Mit Update-Operatoren wie $set, $inc oder $push steuern Sie die Änderungen.
| Operator | Beschreibung | Beispiel |
|---|---|---|
| $set | Feld setzen oder überschreiben | { $set: { preis: 899.99 } } |
| $inc | Zahl um Wert erhöhen | { $inc: { bestand: -1 } } |
| $push | Element zu Array hinzufügen | { $push: { tags: "neu" } } |
| $pull | Element aus Array entfernen | { $pull: { tags: "alt" } } |
| $unset | Feld entfernen | { $unset: { rabatt: "" } } |
| $rename | Feld umbenennen | { $rename: { "name": "produktname" } } |
| $currentDate | Auf aktuelles Datum setzen | { $currentDate: { letzte_aenderung: true } } |
| $addToSet | Element zu Array hinzufügen, wenn nicht vorhanden | { $addToSet: { kategorien: "Neu" } } |
updateMany – ohne Filter werden alle Dokumente in der Collection aktualisiert! Verwenden Sie upsert: true, um ein Dokument zu erstellen, falls es nicht existiert.
deleteOne löscht das erste passende Dokument. deleteMany löscht alle passenden Dokumente. Ohne Filter werden alle Dokumente der Collection gelöscht.
deleteMany({}) löscht alle Dokumente einer Collection. Verwenden Sie drop() für das vollständige Leeren einer Collection – es ist schneller, entfernt aber auch Indizes.
Bulk-Operationen führen mehrere Schreiboperationen in einem einzigen Befehl aus. Sie sind deutlich effizienter als einzelne Befehle und können ordered (stoppt bei Fehler) oder unordered (parallel, setzt bei Fehlern fort) sein.
Optionen geben Ihnen die Kontrolle über das Verhalten von CRUD-Operationen – z.B. upsert (erstellt Dokument, falls nicht vorhanden), projection (welche Felder zurückgegeben werden) oder sort (für findOne).
| Option | Beschreibung | Verwendung |
|---|---|---|
| upsert: true | Erstellt Dokument, falls kein Match | updateOne / updateMany |
| projection | Welche Felder zurückgegeben werden | find / findOne |
| sort | Sortierung für findOne / updateOne | findOne / updateOne |
| hint | Index erzwingen für Query | find / findOne |
| allowDiskUse | Erlaubt Plattennutzung für große Sortierungen | find (Aggregation) |
upsert: true können Sie elegante "Find or Create"-Logik implementieren. Die Kombination mit $setOnInsert erlaubt es, nur beim Erstellen bestimmte Felder zu setzen.
insertOne
find
updateOne
deleteOne
bulkWrite
db.collection.insertOne({ name: "Test" }) ·
db.collection.find({ preis: { $gt: 100 } }) ·
db.collection.updateOne({ name: "Test" }, { $set: { preis: 200 } })