Die beliebteste Dokumentendatenbank. Flexibles Schema.
Installation¶
docker run -d --name mongo -p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=secret \
mongo:7
CRUD¶
db.users.insertOne({name:'Max',email:'[email protected]',age:30})
db.users.find({age:{$gt:25}})
db.users.updateOne({name:'Max'},{$set:{age:31}})
db.users.deleteOne({name:'Max'})
Schema¶
- Embed — 1:1, 1:wenige
- Reference — 1:viele, viele:viele
- Denormalisierung OK
Indizes¶
db.users.createIndex({email:1},{unique:true})
db.orders.createIndex({userId:1,createdAt:-1})
Schema-Design¶
Beim Entwurf eines MongoDB-Schemas entscheiden Sie zwischen Embedding und Referencing basierend auf den Datenbeziehungen. Embedding (verschachtelte Dokumente) ist ideal fuer Daten, die gemeinsam gelesen werden — beispielsweise ein Benutzer mit seinen Adressen. Verwenden Sie Referencing (Verknuepfung ueber ObjectId) fuer Many-to-Many-Beziehungen oder Dokumente, die unbegrenzt wachsen.
MongoDB unterstuetzt Schema-Validierung mittels JSON Schema, wodurch Sie Datentypen und Pflichtfelder auch in einer Dokumentendatenbank erzwingen koennen. Fuer den Produktionseinsatz aktivieren Sie immer die Authentifizierung, richten Sie ein Replica Set fuer Hochverfuegbarkeit ein und ueberwachen Sie die Leistung mit mongostat und mongotop. Atlas (verwaltetes MongoDB) bietet automatische Skalierung, Backups und Monitoring ohne Infrastrukturverwaltung.
MongoDB für flexible Daten¶
Rapid Prototyping, CMS, Kataloge.