Freigeben über


insert

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 Description
<single document or array of documents> Das Dokument oder Array von Dokumenten, die in die Auflistung eingefügt werden sollen
writeConcern (Optional) Ein Dokument, das das Schreiben beunruhigt. Das Schreibproblem beschreibt die Vom Server angeforderte Bestätigungsstufe für den Schreibvorgang.
ordered (Optional) Wenn trueder Server die Dokumente in die angegebene Reihenfolge einfügt. 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 das Schreiben beunruhigt. Das Schreibproblem beschreibt die Vom Server angeforderte Bestätigungsebene für den Schreibvorgang.
  • ordered:Wahlfrei. Wenn trueder Server die Dokumente in die angegebene Reihenfolge einfügt. 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 in Massen eingefügt werden, können beim Angeben von "sortiert" in der Reihenfolge eingefügt werden: true

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"
    }
}