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

MongoDB $min

MongoDB ma $min operator, który pozwala zaktualizować wartość pola tylko wtedy, gdy określona wartość jest mniejsza niż bieżąca wartość pola.

Innymi słowy, jeśli $min wartość jest mniejsza niż bieżąca wartość w dokumencie, $min używana jest wartość. W przeciwnym razie wartość dokumentu pozostaje niezmieniona.

Przykład

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

{ "_id" : 1, "strokes" : 70 } 

I wyobraź sobie, że aktualizujemy dokument po każdej grze w golfa o najnowszy wynik. W tym przypadku chcielibyśmy tylko strokes pole do zaktualizowania, jeśli nasz ostatni wynik był niższy niż nasz poprzedni wynik.

W tym przypadku możemy użyć $min operatora, aby osiągnąć ten wynik.

Przykład:

db.golf.update( 
  { _id: 1 }, 
  { $min: { strokes: 64 } } 
)

Wyjście:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Ta wiadomość informuje nas, że jeden dokument pasował i został zaktualizowany.

Sprawdźmy ponownie kolekcję.

db.golf.find()

Wynik:

{ "_id" : 1, "strokes" : 64 }

Widzimy, że strokes pole zostało zaktualizowane o nową wartość. Dzieje się tak, ponieważ 64 jest niższe niż poprzednia wartość 70.

Gdy wartość jest wyższa

Gdy wartość określona w $min jest wyższa niż istniejąca wartość w dokumencie, nic nie jest aktualizowane.

Przykład:

db.golf.update( 
  { _id: 1 }, 
  { $min: { strokes: 72 } } 
)

Wyjście:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

Widzimy komunikat, że nic nie zostało zaktualizowane.

Sprawdźmy ponownie kolekcję.

db.golf.find()

Wynik:

{ "_id" : 1, "strokes" : 64 }

Widzimy, że wartość pozostaje na 64, mimo że próbowaliśmy zaktualizować ją do 72. Jest to oczekiwane, ponieważ użyliśmy $min .

Daty

Możesz użyć $min w polach daty.

Załóżmy, że mamy collection zwanych gatunkami z następującym dokumentem:

{ "_id" : 1, "firstDiscovered" : ISODate("2000-01-01T00:00:00Z") } 

Spróbujmy zaktualizować datę o datę późniejszą niż bieżąca data w dokumencie.

db.species.update( 
  { _id: 1 }, 
  { $min: { firstDiscovered: new Date("2001-01-01") } } 
)

Tutaj próbujemy zaktualizować rok od 2000 do 2001 . Biorąc pod uwagę, że nowa data jest późniejsza niż istniejąca, otrzymujemy:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

Nic nie zostało zaktualizowane.

Sprawdźmy kolekcję:

db.species.find()

Wynik:

{ "_id" : 1, "firstDiscovered" : ISODate("2000-01-01T00:00:00Z") } 

Zgodnie z oczekiwaniami ta sama wartość daty pozostaje.

Teraz spróbujmy zaktualizować go o wcześniejszą datę.

db.species.update( 
  { _id: 1 }, 
  { $min: { firstDiscovered: new Date("1999-01-01") } } 
)

Wyjście:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Widzimy komunikat, że dokument został zaktualizowany.

Sprawdźmy.

db.species.find()

Wynik:

{ "_id" : 1, "firstDiscovered" : ISODate("1999-01-01T00:00:00Z") } 

Data została zaktualizowana zgodnie z oczekiwaniami.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dostęp do MongoDB z Go

  2. $rozwiń pustą tablicę

  3. Błąd podczas aktualizacji Mongodb z 3.2 do 3.6

  4. Jak zautomatyzować i zarządzać MongoDB za pomocą ClusterControl

  5. Jak usunąć bazę danych za pomocą Mongoose?