MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB $min

MongoDB hat einen $min Operator, mit dem Sie den Wert eines Felds nur dann aktualisieren können, wenn der angegebene Wert kleiner als der aktuelle Wert des Felds ist.

Mit anderen Worten, wenn der $min value ist kleiner als der aktuelle Wert im Dokument, der $min Wert verwendet wird. Andernfalls bleibt der Wert des Dokuments unverändert.

Beispiel

Angenommen, wir haben eine Sammlung namens golf mit folgendem Dokument:

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

Und stellen Sie sich vor, dass wir das Dokument nach jedem Golfspiel mit dem neuesten Ergebnis aktualisieren. In diesem Fall würden wir nur die strokes wollen zu aktualisierendes Feld, wenn unsere letzte Punktzahl niedriger war als unsere vorherige Punktzahl.

In diesem Fall könnten wir den $min verwenden Operator, um dieses Ergebnis zu erzielen.

Beispiel:

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

Ausgabe:

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

Diese Nachricht teilt uns mit, dass ein Dokument übereinstimmte und aktualisiert wurde.

Sehen wir uns die Sammlung noch einmal an.

db.golf.find()

Ergebnis:

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

Wir können sehen, dass die strokes Feld wurde mit dem neuen Wert aktualisiert. Dies liegt daran, dass 64 niedriger ist als sein vorheriger Wert von 70.

Wenn der Wert höher ist

Wenn der mit $min angegebene Wert höher als der vorhandene Wert im Dokument ist, wird nichts aktualisiert.

Beispiel:

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

Ausgabe:

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

Wir können an der Meldung erkennen, dass nichts aktualisiert wurde.

Sehen wir uns die Sammlung noch einmal an.

db.golf.find()

Ergebnis:

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

Wir können sehen, dass der Wert bei 64 bleibt, obwohl wir versucht haben, ihn auf 72 zu aktualisieren. Dies ist zu erwarten, da wir $min verwendet haben .

Termine

Sie können $min verwenden auf Datumsfelder.

Angenommen, wir haben eine collection Genannte Arten mit folgendem Dokument:

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

Versuchen wir, das Datum mit einem Datum zu aktualisieren, das nach dem aktuellen Datum im Dokument liegt.

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

Hier versuchen wir, das Jahr ab 2000 zu aktualisieren bis 2001 . Da das neue Datum nach dem bestehenden liegt, erhalten wir Folgendes:

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

Es wurde nichts aktualisiert.

Sehen wir uns die Sammlung an:

db.species.find()

Ergebnis:

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

Wie erwartet bleibt der gleiche Datumswert.

Versuchen wir nun, es mit einem früheren Datum zu aktualisieren.

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

Ausgabe:

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

An der Meldung können wir erkennen, dass das Dokument aktualisiert wurde.

Lassen Sie uns überprüfen.

db.species.find()

Ergebnis:

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

Das Datum wurde wie erwartet aktualisiert.