Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Polecenie insert służy do tworzenia nowych dokumentów w kolekcji. Jeden dokument lub wiele dokumentów można wstawić w jednym miejscu.
Składnia
Podstawowa składnia polecenia insert to:
db.collection.insert(
<single document or array of documents>,
{
writeConcern: <document>,
ordered: <boolean>
}
)
Parametry
| Parameter | Description |
|---|---|
<single document or array of documents> |
Dokument lub tablica dokumentów do wstawienia do kolekcji |
writeConcern |
(Opcjonalnie) Dokument wyrażający obawy dotyczące zapisu. Problem dotyczący zapisu opisuje poziom potwierdzenia żądanego z serwera dla operacji zapisu |
ordered |
(Opcjonalnie) Jeśli trueserwer wstawia dokumenty w podanej kolejności. Jeśli falseserwer może wstawić dokumenty w dowolnej kolejności i podejmie próbę wstawienia wszystkich dokumentów niezależnie od błędów |
-
<single document or array of documents>: dokument lub tablica dokumentów do wstawienia do kolekcji. -
writeConcern: opcjonalne. Dokument wyrażający obawy dotyczące zapisu. Problem dotyczący zapisu opisuje poziom potwierdzenia żądanego z serwera dla operacji zapisu. -
ordered: opcjonalne. Jeślitrueserwer wstawia dokumenty w podanej kolejności. Jeślifalseserwer może wstawić dokumenty w dowolnej kolejności i podejmie próbę wstawienia wszystkich dokumentów niezależnie od błędów.
Przykłady
Wstawianie pojedynczego dokumentu
Następujące polecenie wstawia pojedynczy dokument do kolekcji stores w bazie danych StoreData.
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
}
]
}
]
})
Wstawianie wielu dokumentów
Następujące polecenie wstawia tablicę dokumentów do kolekcji stores.
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
}
]
}
]
}
])
Określanie wartości pola _id
Jeśli nie określono pola _id, serwer automatycznie generuje unikatową wartość ObjectId() dla dokumentu. Jeśli dokument określa pole _id, musi być globalnie unikatową wartością we wszystkich dokumentach w kolekcji.
Jeśli zostanie określona zduplikowana wartość pola _id, serwer zgłosi błąd naruszenia zduplikowanego klucza.
{
"WriteErrors": [
{
"WriteError": {
"err": {
"index": 0,
"code": 11000,
"errmsg": "Duplicate key violation on the requested collection: Index '_id_'",
"errInfo": "undefined",
"op": {
"testField": "testValue",
"_id": "1"
}
}
}
}
]
}
Wstawianie wielu dokumentów w kolejności
Dokumenty wstawione zbiorczo można wstawić w kolejności podczas określania "uporządkowane": 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)
Polecenie insert uporządkowane zwraca odpowiedź potwierdzając kolejność wstawiania dokumentów:
{
"acknowledged": true,
"insertedIds": {
"0": "123456",
"1": "234567"
}
}