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

Jak usunąć pole z dokumentu MongoDB ($unset)

W MongoDB możesz użyć $unset operator aktualizacji pola, aby całkowicie usunąć pole z dokumentu.

$unset operator został zaprojektowany specjalnie do usuwania pola i jego wartości z dokumentu.

Przykład

Załóżmy, że mamy kolekcję o nazwie dogs z następującymi dokumentami:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

I załóżmy, że chcemy usunąć type pole (i jego odpowiednią wartość) ze wszystkich dokumentów.

Możemy to zrobić:

db.dogs.updateMany(
   { },
   { $unset: { type: "" } }
)

Wyjście:

{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 }

To mówi nam, że pasowały cztery dokumenty (ponieważ użyliśmy pustego dokumentu zapytania jako pierwszego argumentu) i cztery zostały zaktualizowane.

Teraz ponownie sprawdźmy kolekcję:

db.dogs.find()

Wynik:

{ "_id" : 1, "name" : "Wag", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "weight" : 30 }

Widzimy, że type pole zostało całkowicie usunięte z każdego dokumentu.

Zwróć uwagę, że określona wartość w $unset wyrażenie (np. „”) nie ma wpływu na operację.

Usuń wiele pól

Możesz określić wiele pól do usunięcia, oddzielając je przecinkami.

Przykład:

db.dogs.updateMany(
   { },
   { $unset: { name: "", weight: "" } }
)

Wyjście:

{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 }

Sprawdź kolekcję:

db.dogs.find()

Wynik:

{ "_id" : 1 }
{ "_id" : 2 }
{ "_id" : 6 }
{ "_id" : 7 }

Teraz tylko _id pola są pozostawione.

Osadzone dokumenty

Możesz użyć notacji kropkowej, aby usunąć pola z osadzonych dokumentów.

Załóżmy, że mamy kolekcję o nazwie pets z następującym dokumentem:

{
	"_id" : 1,
	"name" : "Wag",
	"details" : {
		"type" : "Dog",
		"weight" : 20,
		"awards" : {
			"Florida Dog Awards" : "Top Dog",
			"New York Marathon" : "Fastest Dog",
			"Sumo 2020" : "Biggest Dog"
		}
	}
}

I załóżmy, że chcemy usunąć awards pole z dokumentu.

Możemy to zrobić:

db.pets.updateMany(
   { _id: 1 },
   { $unset: { "details.awards": "" } }
)

Wyjście:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Sprawdźmy teraz dokument:

db.pets.findOne()

Wynik:

{
	"_id" : 1,
	"name" : "Wag",
	"details" : {
		"type" : "Dog",
		"weight" : 20
	}
}

awards pole i jego wartość (która sama była osadzonym dokumentem) została usunięta z dokumentu.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB :znajdź wartość w tablicy z wieloma kryteriami

  2. Strumienie Mongo Change uruchamiane wiele razy (tak jakby):aplikacja Node działająca w wielu instancjach

  3. Jak mogę uzyskać dostęp do MongoDB Meteor z innego klienta, gdy Meteor jest uruchomiony?

  4. Niestandardowa deserializacja

  5. MongoDB GridFs z C#, jak przechowywać pliki takie jak obrazy?