W MongoDB db.collection.insert()
metoda wstawia dokument lub dokumenty do kolekcji.
collection
część to nazwa kolekcji, do której należy wstawić dokument/y.
Przykład
Oto przykład użycia db.collection.insert()
aby wstawić wiele dokumentów do kolekcji o nazwie pets
:
db.pets.insert([
{ _id: 1, name: "Wag", type: "Dog" },
{ _id: 2, name: "Bark", type: "Dog" },
{ _id: 3, name: "Meow", type: "Cat" }
])
Wynik:
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
db.collection.insert()
metoda zwraca obiekt, który zawiera stan operacji wstawiania.
Zwrócony obiekt zależy od tego, czy wstawiono pojedynczy dokument, czy wiele dokumentów.
- Po wstawieniu pojedynczego dokumentu, zwraca on
WriteResult
obiekt. - Gdy wstawiana jest tablica dokumentów, zwraca
BulkWriteResult
obiekt.
Widzimy, że powyższy przykład zwrócił BulkWriteResult
obiekt. To dlatego, że dodaliśmy szereg dokumentów. Zrobiłoby to, nawet gdyby tablica zawierała tylko jeden element.
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 dokumentu bez podania _id
pola.
db.pets.insert(
{ name: "Bruce", type: "Bat" }
)
Wynik:
WriteResult({ "nInserted" : 1 })
Zauważ, że w tym przypadku metoda zwraca WriteResult
obiekt zamiast BulkWriteResult
obiekt. Dzieje się tak, ponieważ wstawiliśmy pojedynczy dokument (i nie było go w tablicy).
Teraz spójrzmy ponownie na 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("5fe323d837b49e0faf1af218"), "name" : "Bruce", "type" : "Bat" }
Widzimy, że nasz nowy dokument jest zawarty w kolekcji i ma _id
pole z automatycznie wygenerowaną wartością.
ordered
Parametr
db.collection.insert()
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.insert()
metoda akceptuje również writeConcern
argument, który opisuje poziom potwierdzenia żądanego od MongoDB dla operacji zapisu.
Zobacz dokumentację MongoDB dla db.collection.insert()
aby uzyskać więcej informacji.