MongoDB Collection erstellen
In diesem Kapitel stellen wir vor, wie Sie MongoDB zum Erstellen von Collections verwenden.
In MongoDB verwenden Sie die MethodecreateCollection(), um eine Collection zu erstellen.
Syntaxformat:
db.createCollection(name, options)
Parameter description:
- name: Der Name der zu erstellenden Collection.
- options: Optionale Parameter, die Optionen bezüglich Speichergröße und Indizes angeben.
options kann die folgenden Parameter annehmen:
| Parametername | Type | Beschreibung | Beispielwert |
|---|---|---|---|
capped | Boolean | Ob eine Capped Collection erstellt werden soll. | true |
size | Number | Die maximale Größe der Collection (in Bytes). Nur gültig, wenncappedtrue ist. | 10485760 (10MB) |
max | Number | Die maximale Anzahl von Dokumenten, die in der Collection erlaubt sind. Nur gültig, wenncappedtrue ist. | 5000 |
validator | Objekt | Ausdruck, der für die Dokumentvalidierung verwendet wird. | { $jsonSchema: { ... }} |
validationLevel | String | Gibt die Strenge der Dokumentvalidierung an."off": Keine Validierung."strict": Sowohl Einfüge- als auch Aktualisierungsvorgänge müssen die Validierung bestehen (Standard)."moderate": Nur Aktualisierungen bestehender Dokumente müssen die Validierung bestehen; neue Dokumenteinfügungen müssen dies nicht. | "strict" |
validationAction | String | Gibt die auszuführende Aktion an, wenn die Dokumentvalidierung fehlschlägt."error": Blockiert Einfügen oder Aktualisieren (Standard)."warn": Ermöglicht Einfügen oder Aktualisieren, gibt jedoch eine Warnung aus. | "error" |
storageEngine | Objekt | Legt die Storage-Engine-Konfiguration für die Collection fest. | { wiredTiger: { ... }} |
collation | Objekt | Legt die Standard-Collation für die Collection fest. | { locale: "en", strength: 2 } |
Beim Einfügen von Dokumenten prüft MongoDB zuerst das Feld size der Capped-Collection und danach das Feld max.
Ein Beispiel für das Erstellen einer Collection mit diesen Optionen:
Beispiel
capped: true,
size: 10485760,
max: 5000,
validator: { $jsonSchema: {
bsonType: "object",
required: ["name", "email"],
properties: {
name: {
bsonType: "string",
description: "Muss eine Zeichenkette sein und ist erforderlich"
},
email: {
bsonType: "string",
pattern: "^.+@.+$",
description: "Muss eine gültige E-Mail-Adresse sein"
}
}
}},
validationLevel: "strict",
validationAction: "error",
storageEngine: {
wiredTiger: { configString: "block_compressor=zstd" }
},
collation: { locale: "en", strength: 2 }
});
Dieses Beispiel erstellt eine Sammlung mit den folgenden Eigenschaften:
- Capped, maximal 10MB, kann bis zu 5000 Dokumente speichern.
- Dokumente müssen enthalten
nameundemailFelder, wobeinamemuss eine Zeichenkette sein,emailmuss ein gültiges E-Mail-Format sein. - Die Validierungsstufe ist strict; ein Validierungsfehler blockiert Einfügen oder Aktualisieren.
- Verwendet die WiredTiger-Speicher-Engine, wobei der Blockkompressor auf zstd eingestellt ist.
- Verwendet standardmäßig die englische Kollation.
Beispiel
Erstellen Sie die Beispielsammlung in der Testdatenbank:
> use test
switched to db test
> db.createCollection("example")
{ "ok" : 1 }
>
Um vorhandene Sammlungen anzuzeigen, können Sieshow collectionsodershow tablesals Befehl verwenden:
> show collections example system.indexes
Das Folgende ist die Verwendung von createCollection() mit mehreren Schlüsselparametern:
Erstellte eine Capped Collection mit einer maximalen Größe von 5MB (5,242,880 bytes) und bis zu 5,000 Dokumenten.
db.createCollection("myCappedCollection", { capped: true, size: 5242880, max: 5000 });
In MongoDB müssen Sie keine Sammlung erstellen. Wenn Sie einige Dokumente einfügen, erstellt MongoDB die Sammlung automatisch.
> db.mycol2.insert({"name" : "Example"})
> show collections
mycol2
...
Erstellte eine Capped Collection mit einer maximalen Größe von 1MB (1,048,576 bytes):
db.createCollection("myCappedCollection", { capped: true, size: 1048576 });
Das folgende Beispiel erstellt einen Validator für die Sammlung myCollection, der erfordert, dass Dokumente die Felder name und age haben müssen, name eine Zeichenkette sein muss und age eine nichtnegative Ganzzahl sein muss.
Beispiel
validator: { $jsonSchema: {
bsonType: "object",
required: ["name", "age"],
properties: {
name: {
bsonType: "string",
description: "Muss eine Zeichenkette sein und ist erforderlich"
},
age: {
bsonType: "int",
minimum: 0,
description: "Muss eine Ganzzahl sein und ist erforderlich"
}
}
}}
});