W MongoDB db.collection.insertMany()
metoda wstawia wiele dokumentów do kolekcji.
collection
część to nazwa kolekcji, do której mają zostać wstawione dokumenty.
Przykład
Oto przykład użycia db.collection.insertMany()
aby wstawić wiele dokumentów do kolekcji o nazwie pets
:
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Wynik:
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] }
db.collection.insertMany()
metoda zwraca dokument zawierający:
- Boole'owskie
acknowledged
jakotrue
jeśli operacja została wykonana z problemem zapisu lubfalse
jeśli problem zapisu był wyłączony. - Tablica
_id
wartości dla każdego pomyślnie wstawionego dokumentu.
Teraz, jeśli użyjemy db.collection.find()
aby spojrzeć na kolekcję, zobaczymy nowo dodane dokumenty.
db.pets.find()
Wynik:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
W tym przypadku nasze trzy dokumenty są jedynymi w kolekcji, więc tylko te dokumenty zostały zwrócone.
Jeśli jednak kolekcja była duża, moglibyśmy użyć identyfikatorów dokumentów, aby zawęzić wyniki tylko do interesujących nas dokumentów.
db.pets.find({_id: {$in: [1,2,3]}})
Wynik:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Co jeśli kolekcja nie istnieje?
Jeśli kolekcja nie istnieje, jest tworzona, a dokumenty są do niej dodawane.
Jeśli kolekcja już istnieje, dokumenty są do niej po prostu dodawane (pod warunkiem ich _id
wartości nie kolidują z żadnymi istniejącymi).
Kiedy stworzyłem ten przykład, kolekcja nie istniała, więc została utworzona operacja wstawiania.
_id
Pole
_id
pole jest unikalnym polem identyfikatora w MongoDB.
Jak pokazano w poprzednim przykładzie, możesz podać swój własny _id
pole w dokumencie. Jeśli to zrobisz, jego wartość musi być unikalna w kolekcji. Dzieje się tak, ponieważ Twój _id
pole będzie używane jako unikalny identyfikator dokumentu.
Oto przykład wstawiania dokumentów bez podania _id
pola.
db.pets.insertMany([
{ name: "Bruce", type: "Bat" },
{ name: "Sweetie", type: "Honey Badger" }
])
Wynik:
{ "acknowledged" : true, "insertedIds" : [ ObjectId("5fe30ef737b49e0faf1af215"), ObjectId("5fe30ef737b49e0faf1af216") ] }
_id
zwracane są wartości dokumentów. Moglibyśmy ich użyć do przeszukania kolekcji tylko pod kątem wstawionych dokumentów.
Ale w tym przypadku spójrzmy na całą kolekcję.
db.pets.find()
Wynik:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : ObjectId("5fe30ef737b49e0faf1af215"), "name" : "Bruce", "type" : "Bat" } { "_id" : ObjectId("5fe30ef737b49e0faf1af216"), "name" : "Sweetie", "type" : "Honey Badger" }
Widzimy, że nasze dwa nowe dokumenty są zawarte w kolekcji.
ordered
Parametr
db.collection.insertMany()
metoda akceptuje również ordered
parametr. Jest to parametr logiczny z domyślną wartością true
.
ordered
parametr określa, czy operacja wstawiania powinna być uporządkowana, czy nieuporządkowana.
Jeśli ordered
jest ustawione na false
, dokumenty są wstawiane w nieuporządkowanym formacie i mogą być zmieniane przez mongod
w celu zwiększenia wydajności.
Przy zamówionych wstawkach, jeśli wystąpi błąd podczas wstawiania jednego z dokumentów, MongoDB zwraca błąd bez przetwarzania pozostałych dokumentów w tablicy.
W przypadku nieuporządkowanych wstawek, jeśli wystąpi błąd podczas wstawiania jednego z dokumentów, MongoDB kontynuuje wstawianie pozostałych dokumentów do tablicy.
Więcej informacji
db.collection.insertMany()
metoda akceptuje również writeConcern
argument, który opisuje poziom potwierdzenia żądanego od MongoDB dla operacji zapisu.
Zobacz dokumentację MongoDB dla db.collection.insertMany()
aby uzyskać więcej informacji.