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:

ParameternameTypeBeschreibungBeispielwert
cappedBooleanOb eine Capped Collection erstellt werden soll.true
sizeNumberDie maximale Größe der Collection (in Bytes). Nur gültig, wenncappedtrue ist.10485760 (10MB)
maxNumberDie maximale Anzahl von Dokumenten, die in der Collection erlaubt sind. Nur gültig, wenncappedtrue ist.5000
validatorObjektAusdruck, der für die Dokumentvalidierung verwendet wird.{ $jsonSchema: { ... }}
validationLevelStringGibt 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"
validationActionStringGibt 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"
storageEngineObjektLegt die Storage-Engine-Konfiguration für die Collection fest.{ wiredTiger: { ... }}
collationObjektLegt 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

db.createCollection("myComplexCollection", {
  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 enthaltennameundemailFelder, 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

db.createCollection("myCollection", {
  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"
      }
    }
  }}
});
Weitere Erweiterungen