MongoDB Dokumente einfügen

In diesem Kapitel zeigen wir Ihnen, wie Sie Daten in MongoDB-Sammlungen einfügen.

⟦⟧Die Datenstruktur von Dokumenten ist im Wesentlichen dieselbe wie die von JSON.

Alle in Collections gespeicherten Daten liegen im BSON-Format vor.

BSON ist ein JSON-ähnliches binäres Speicherformat und steht für Binary JSON.

Zu den gängigen Methoden zum Einfügen von Dokumenten gehören:

MethodeZweckVeraltet?
insertOne()Ein einzelnes Dokument einfügennein
insertMany()Mehrere Dokumente einfügennein
insert()Ein einzelnes oder mehrere Dokumente einfügenJa
save()Ein Dokument einfügen oder aktualisierenJa

1、insertOne()

Die Methode insertOne() wird verwendet, um ein einzelnes Dokument in eine Collection einzufügen.

db.collection.insertOne(document, options)
  • document: Das einzelne einzufügende Dokument.
  • options (optional): Ein optionales Parameterobjekt, das writeConcern, bypassDocumentValidation usw. enthalten kann.

Beispiel

db.myCollection.insertOne({
    name: "Alice",
    age: 25,
    city: "New York"
});

Zurückgegebenes Ergebnis:

{
    "acknowledged": true,
    "insertedId": ObjectId("60c72b2f9b1d8b5a5f8e2b2d")
}

2. insertMany()

Die Methode insertMany() wird verwendet, um mehrere Dokumente in eine Sammlung einzufügen.

db.collection.insertMany(documents, options)
  • documents: Ein Array von Dokumenten, die eingefügt werden sollen.
  • options (optional): Ein optionales Parameterobjekt, das ordered, writeConcern, bypassDocumentValidation usw. enthalten kann.
db.myCollection.insertMany([
    { name: "Bob", age: 30, city: "Los Angeles" },
    { name: "Charlie", age: 35, city: "Chicago" }
]);

Zurückgegebenes Ergebnis:

{
    "acknowledged": true,
    "insertedIds": [
        ObjectId("60c72b2f9b1d8b5a5f8e2b2e"),
        ObjectId("60c72b2f9b1d8b5a5f8e2b2f")
    ]
}

3. db.collection.save()

Die Methode save() verhält sich beim Einfügen von Dokumenten ähnlich wie insertOne().

Wenn das Dokument ein _id-Feld enthält und dieses bereits existiert, wird das Dokument aktualisiert; wenn das Dokument kein _id-Feld enthält oder die _id nicht existiert, wird ein neues Dokument eingefügt.

Seit MongoDB 4.2 ist db.collection.save() als veraltet markiert, und die offizielle Empfehlung ist, stattdessen db.collection.insertOne() oder db.collection.replaceOne() zu verwenden.

db.collection.save(document, options)
  • document: Das zu speichernde Dokument.
  • options (optional): Ein optionales Parameterobjekt, das writeConcern usw. enthalten kann.
db.myCollection.save({
    _id: ObjectId("60c72b2f9b1d8b5a5f8e2b2d"),
    name: "David",
    age: 40,
    city: "San Francisco"
});

Ein einzelnes oder mehrere Dokumente einfügen (Alte Methode)

Verwenden Sie die Methode db.collection.insert(), um einzelne oder mehrere Dokumente einzufügen.

Die Methode insert() wurde in MongoDB 4.2 und später als veraltet markiert, und es wird empfohlen, insertOne() und insertMany() zu verwenden.

Syntax:

db.collection.insert(document_or_array)

Parameter:

  • Es kann ein Dokument oder ein Array von Dokumenten sein.

1. Ein einzelnes Dokument einfügen:

db.users.insert({ name: "David", age: 40, email: "[email protected]" });

2. Mehrere Dokumente einfügen:

db.users.insert([
  { name: "Eve", age: 45, email: "[email protected]" },
  { name: "Frank", age: 50, email: "[email protected]" }
]);

Leistungsoptimierung für Masseneinfügungen

Wenn Sie eine große Anzahl von Dokumenten einfügen müssen, können Sie insertMany() verwenden und dieordered: falseOption aktivieren, um die Einfügeleistung zu verbessern.

Syntax:

db.collection.insertMany([document1, document2, ...], { ordered: false })

Parameter:

  • ordered: false: Gibt eine ungeordnete Einfügung an. Selbst wenn ein Dokument nicht eingefügt werden kann, beeinträchtigt dies nicht das Einfügen anderer Dokumente.

Beispiel

db.users.insertMany([
  { name: "Henry", age: 60 },
  { name: "Ivy", age: 65 }
], { ordered: false });

Validierung beim Einfügen

MongoDB validiert die eingefügten Dokumente gemäß den Schema-Validierungsregeln der Collection (falls definiert). Wenn ein Dokument nicht den Regeln entspricht, schlägt der Einfügevorgang fehl.

Angenommen, die users-Collection hat eine Validierungsregel, die erfordert, dass das Feld age größer als 0 ist:

db.createCollection("users", {
  validator: {
    age: { $gt: 0 }
  }
});

Das Einfügen des folgenden Dokuments schlägt fehl:

db.users.insertOne({ name: "John", age: -5 }); // 验证失败
Andere Erweiterungen