MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB bulkWrite()

W MongoDB db.collection.bulkWrite() Metoda wykonuje wiele operacji zapisu z kontrolkami kolejności wykonywania.

Operacje zapisu zbiorczego wpływają na pojedynczą kolekcję. collection część to nazwa kolekcji, na której mają zostać wykonane operacje.

Operacje zapisu zbiorczego

db.collection.bulkWrite() Metoda może być użyta do wykonania następujących operacji zapisu:

  • insertOne
  • updateOne
  • updateMany
  • replaceOne
  • deleteOne
  • deleteMany

Każda z tych metod może być zawarta w wywołaniu db.collection.bulkWrite() i możesz dołączyć różne metody w tym samym wywołaniu.

Przykład

Oto przykład użycia db.collection.bulkWrite() do wykonywania operacji zapisu zbiorczego na kolekcji o nazwie pets :

Załóżmy, że wstawiamy następujące dokumenty do kolekcji o nazwie pets :

db.pets.insertMany([
    { _id: 1, name: "Wag", type: "Dog", weight: 20 },
    { _id: 2, name: "Bark", type: "Dog", weight: 10 },
    { _id: 3, name: "Meow", type: "Cat" },
    { _id: 4, name: "Scratch", type: "Cat" },
    { _id: 5, name: "Bruce", type: "Bat" }
    ])

Możemy teraz użyć db.collection.bulkWrite() aby wykonać operację zapisu zbiorczego na tej kolekcji.

Przykład:

db.pets.bulkWrite([
    { insertOne: { "document": { "_id": 6, "name": "Bubbles", "type": "Fish" }}},
    { updateOne : {
        "filter" : { "_id" : 2 },
        "update" : { $set : { "weight" : 15 } }
    } },
    { deleteOne : { "filter" : { "_id" : 5 } } },
    { replaceOne : {
        "filter" : { "_id" : 4 },
        "replacement" : { "name" : "Bite", "type" : "Dog", "weight": 5 }
    } }
])

Wynik:

{
	"acknowledged" : true,
	"deletedCount" : 1,
	"insertedCount" : 1,
	"matchedCount" : 2,
	"upsertedCount" : 0,
	"insertedIds" : {
		"0" : 6
	},
	"upsertedIds" : {
		
	}
}

W tym przypadku wstawiliśmy jeden dokument, zaktualizowaliśmy inny dokument, usunęliśmy inny i zastąpiliśmy inny dokument.

db.collection.bulkWrite() metoda zwraca co następuje:

  • Boole'owskie acknowledged jako true jeśli operacja została wykonana z problemem zapisu lub false jeśli problem zapisu był wyłączony.
  • Liczba dla każdej operacji zapisu.
  • Tabela zawierająca _id dla każdego pomyślnie wstawionego lub przesuniętego dokumentu.

Wyświetl wynik

Przyjrzyjmy się teraz ponownie dokumentom w kolekcji.

db.pets.find()

Wynik:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 15 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : 4, "name" : "Bite", "type" : "Dog", "weight" : 5 }
{ "_id" : 6, "name" : "Bubbles", "type" : "Fish" }

Widzimy, że wszystkie zmiany zostały wprowadzone zgodnie z opisem.

ordered Parametr

Operacje zapisu zbiorczego mogą być uporządkowane lub nieuporządkowane. Domyślnie są uporządkowane.

Kolejność można określić za pomocą uporządkowanego parametru logicznego. Podanie wartości true tworzy uporządkowaną listę operacji, ustawiając ją na false sprawia, że ​​jest to nieuporządkowana lista operacji.

Z uporządkowaną listą operacji, MongoDB wykonuje operacje szeregowo. Jeśli wystąpi błąd podczas przetwarzania jednej z operacji zapisu, MongoDB zwróci bez przetwarzania pozostałych operacji zapisu na liście.

Z nieuporządkowaną listą operacji, MongoDB może wykonywać operacje równolegle (chociaż nie jest to gwarantowane). Jeśli wystąpi błąd podczas przetwarzania jednej z operacji zapisu, MongoDB będzie kontynuować przetwarzanie pozostałych operacji zapisu na liście.

Więcej informacji

db.collection.bulkWrite() metoda akceptuje również writeConcern argument, który opisuje poziom potwierdzenia żądanego od MongoDB dla operacji zapisu.

Zobacz dokumentację MongoDB dla db.collection.bulkWrite() aby uzyskać więcej informacji.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. jak $ projektu ObjectId do wartości ciągu w agregacie mongodb?

  2. Wskaźnik potrójnego związku Mongo

  3. Statystyki wizualne dla Twojego serwera MongoDB

  4. MongoDB countDocuments()

  5. Złożone sortowanie Mongo?