Freigeben über


einfügen

Der insert Befehl wird verwendet, um neue Dokumente in einer Auflistung zu erstellen. Entweder ein einzelnes Dokument oder mehrere Dokumente können einzeln eingefügt werden.

Syntax

Die grundlegende Syntax des Einfügebefehls lautet:

db.collection.insert(
   <single document or array of documents>,
   {
     writeConcern: <document>,
     ordered: <boolean>
   }
)

Die Parameter

Parameter BESCHREIBUNG
<single document or array of documents> Das Dokument oder Array von Dokumenten, das in die Sammlung eingefügt werden soll
writeConcern (Optional) Ein Dokument, das die Schreibsicherheit beschreibt. Der Schreibvorgang beschreibt die vom Server angeforderte Bestätigungsstufe für den Schreibvorgang.
ordered (Optional) Wenn true, fügt der Server die Dokumente in der angegebenen Reihenfolge ein. Wenn falseder Server die Dokumente in beliebiger Reihenfolge einfügen kann und versucht, alle Dokumente unabhängig von Fehlern einzufügen.
  • <single document or array of documents>: Das Dokument oder Array von Dokumenten, das in die Auflistung eingefügt werden soll.
  • writeConcern:Wahlfrei. Ein Dokument, das die Schreibsicherheit ausdrückt. Die Schreibsicherheit beschreibt die vom Server angeforderte Bestätigungsebene für den Schreibvorgang.
  • ordered:Wahlfrei. Wenn der Wert true lautet, fügt der Server die Dokumente in der angegebenen Reihenfolge ein. Wenn falseder Server die Dokumente in beliebiger Reihenfolge einfügen kann und versucht, alle Dokumente unabhängig von Fehlern einzufügen.

Beispiel(n)

Einfügen eines einzelnen Dokuments

Mit dem folgenden Befehl wird ein einzelnes Dokument in die Speichersammlung in der StoreData-Datenbank eingefügt.

db.stores.insertOne({
  "storeId": "12345",
  "name": "Boulder Innovations",
  "location": {
    "lat": 37.7749,
    "lon": -122.4194
  },
  "staff": {
    "totalStaff": {
      "fullTime": 15,
      "partTime": 10
    }
  },
  "sales": {
    "totalSales": 500000.00,
    "salesByCategory": [
      {
        "categoryName": "Laptops",
        "totalSales": 300000.00
      },
      {
        "categoryName": "Smartphones",
        "totalSales": 200000.00
      }
    ]
  },
  "promotionEvents": [
    {
      "eventName": "Summer Sale",
      "promotionalDates": {
        "startDate": "2024-06-01",
        "endDate": "2024-06-30"
      },
      "discounts": [
        {
          "categoryName": "Laptops",
          "discountPercentage": 15
        },
        {
          "categoryName": "Smartphones",
          "discountPercentage": 10
        }
      ]
    },
    {
      "eventName": "Holiday Specials",
      "promotionalDates": {
        "startDate": "2024-12-01",
        "endDate": "2024-12-31"
      },
      "discounts": [
        {
          "categoryName": "Laptops",
          "discountPercentage": 20
        },
        {
          "categoryName": "Smartphones",
          "discountPercentage": 25
        }
      ]
    }
  ]
})

Einfügen mehrerer Dokumente

Mit dem folgenden Befehl wird ein Array von Dokumenten in die Speichersammlung eingefügt.

db.stores.insertMany([
  {
    "storeId": "12346",
    "name": "Graphic Design Institute",
    "location": {
      "lat": 34.0522,
      "lon": -118.2437
    },
    "staff": {
      "totalStaff": {
        "fullTime": 20,
        "partTime": 5
      }
    },
    "sales": {
      "totalSales": 750000.00,
      "salesByCategory": [
        {
          "categoryName": "Laptops",
          "totalSales": 400000.00
        },
        {
          "categoryName": "Smartphones",
          "totalSales": 350000.00
        }
      ]
    },
    "promotionEvents": [
      {
        "eventName": "Black Friday",
        "promotionalDates": {
          "startDate": "2024-11-25",
          "endDate": "2024-11-30"
        },
        "discounts": [
          {
            "categoryName": "Laptops",
            "discountPercentage": 25
          },
          {
            "categoryName": "Smartphones",
            "discountPercentage": 30
          }
        ]
      }
    ]
  },
  {
    "storeId": "12347",
    "name": "Relecloud",
    "location": {
      "lat": 40.7128,
      "lon": -74.0060
    },
    "staff": {
      "totalStaff": {
        "fullTime": 10,
        "partTime": 20
      }
    },
    "sales": {
      "totalSales": 600000.00,
      "salesByCategory": [
        {
          "categoryName": "Laptops",
          "totalSales": 350000.00
        },
        {
          "categoryName": "Smartphones",
          "totalSales": 250000.00
        }
      ]
    },
    "promotionEvents": [
      {
        "eventName": "New Year Sale",
        "promotionalDates": {
          "startDate": "2024-01-01",
          "endDate": "2024-01-07"
        },
        "discounts": [
          {
            "categoryName": "Laptops",
            "discountPercentage": 10
          },
          {
            "categoryName": "Smartphones",
            "discountPercentage": 15
          }
        ]
      }
    ]
  }
])

Angeben eines Werts für das feld _id

Wenn das feld _id nicht angegeben ist, generiert der Server automatisch einen eindeutigen ObjectId()-Wert für das Dokument. Wenn das Dokument das feld _id angibt, muss es sich um einen global eindeutigen Wert für alle Dokumente innerhalb der Auflistung handelt.

Wenn ein doppelter Wert für das Feld _id angegeben wird, wird vom Server ein Fehler aufgrund eines doppelten Schlüsselverstoßes ausgelöst.

{
    "WriteErrors": [
        {
            "WriteError": {
                "err": {
                    "index": 0,
                    "code": 11000,
                    "errmsg": "Duplicate key violation on the requested collection: Index '_id_'",
                    "errInfo": "undefined",
                    "op": {
                        "testField": "testValue",
                        "_id": "1"
                    }
                }
            }
        }
    ]
}

Einfügen mehrerer Dokumente in der reihenfolge

Dokumente, die per Massenvorgang eingefügt werden, können bei Angabe von „ordered: true“ der Reihe nach eingefügt werden.

db.stores.insertMany([
  {
    "_id": "123456",
    "storeId": "123456",
    "name": "Graphic Design Institute",
    "location": {
      "lat": 34.0522,
      "lon": -118.2437
    },
    "staff": {
      "totalStaff": {
        "fullTime": 20,
        "partTime": 5
      }
    },
    "sales": {
      "totalSales": 750000.00,
      "salesByCategory": [
        {
          "categoryName": "Laptops",
          "totalSales": 400000.00
        },
        {
          "categoryName": "Smartphones",
          "totalSales": 350000.00
        }
      ]
    },
    "promotionEvents": [
      {
        "eventName": "Black Friday",
        "promotionalDates": {
          "startDate": "2024-11-25",
          "endDate": "2024-11-30"
        },
        "discounts": [
          {
            "categoryName": "Laptops",
            "discountPercentage": 25
          },
          {
            "categoryName": "Smartphones",
            "discountPercentage": 30
          }
        ]
      }
    ]
  },
  {
    "_id": "234567",
    "storeId": "234567",
    "name": "Relecloud",
    "location": {
      "lat": 40.7128,
      "lon": -74.0060
    },
    "staff": {
      "totalStaff": {
        "fullTime": 10,
        "partTime": 20
      }
    },
    "sales": {
      "totalSales": 600000.00,
      "salesByCategory": [
        {
          "categoryName": "Laptops",
          "totalSales": 350000.00
        },
        {
          "categoryName": "Smartphones",
          "totalSales": 250000.00
        }
      ]
    },
    "promotionEvents": [
      {
        "eventName": "New Year Sale",
        "promotionalDates": {
          "startDate": "2024-01-01",
          "endDate": "2024-01-07"
        },
        "discounts": [
          {
            "categoryName": "Laptops",
            "discountPercentage": 10
          },
          {
            "categoryName": "Smartphones",
            "discountPercentage": 15
          }
        ]
      }
    ]
  }
], "ordered": true)

Der Befehl "Sortiertes Einfügen" gibt eine Antwort zurück, in der die Reihenfolge bestätigt wird, in der Dokumente eingefügt wurden:

{
    "acknowledged": true,
    "insertedIds": {
        "0": "123456",
        "1": "234567"
    }
}