sql >> Database >  >> NoSQL >> MongoDB

MongoDB $ min

MongoDB heeft een $min operator waarmee u de waarde van een veld alleen kunt bijwerken als de opgegeven waarde kleiner is dan de huidige waarde van het veld.

Met andere woorden, als de $min waarde kleiner is dan de huidige waarde in het document, de $min waarde wordt gebruikt. Anders blijft de waarde van het document ongewijzigd.

Voorbeeld

Stel dat we een verzameling hebben met de naam golf met het volgende document:

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

En stel je voor dat we het document na elke partij golf updaten met de laatste score. In dit geval willen we alleen de strokes veld dat moet worden bijgewerkt als onze laatste score lager was dan onze vorige score.

In dit geval zouden we de $min . kunnen gebruiken operator om dat resultaat te bereiken.

Voorbeeld:

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

Uitgang:

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

Dit bericht vertelt ons dat één document overeenkomt en is bijgewerkt.

Laten we de collectie nog eens bekijken.

db.golf.find()

Resultaat:

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

We kunnen zien dat de strokes veld is bijgewerkt met de nieuwe waarde. Dit komt omdat 64 lager is dan de vorige waarde van 70.

Als de waarde hoger is

Wanneer de waarde gespecificeerd met $min hoger is dan de bestaande waarde in het document, wordt er niets bijgewerkt.

Voorbeeld:

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

Uitgang:

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

We kunnen aan het bericht zien dat er niets is bijgewerkt.

Laten we de collectie nog eens bekijken.

db.golf.find()

Resultaat:

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

We kunnen zien dat de waarde op 64 blijft, ook al hebben we geprobeerd deze bij te werken naar 72. Dit is te verwachten, omdat we $min hebben gebruikt .

Datums

U kunt $min . gebruiken op datumvelden.

Stel we hebben een collection soort genoemd met het volgende document:

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

Laten we proberen de datum bij te werken met een datum die later is dan de huidige datum in het document.

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

Hier proberen we het jaar bij te werken vanaf 2000 tot 2001 . Aangezien de nieuwe datum later is dan de bestaande, krijgen we het volgende:

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

Er is niets bijgewerkt.

Laten we de collectie eens bekijken:

db.species.find()

Resultaat:

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

Zoals verwacht blijft dezelfde datumwaarde behouden.

Laten we nu proberen het bij te werken met een eerdere datum.

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

Uitgang:

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

We kunnen aan het bericht zien dat het document is bijgewerkt.

Laten we eens kijken.

db.species.find()

Resultaat:

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

De datum is bijgewerkt zoals verwacht.


  1. StackExchange.Redis.RedisTimeoutException:time-out in afwachting van antwoord

  2. Implementeer ik het serialiseren en deserialiseren van NodesJS + Passport + RedisStore?

  3. Werken met geneste objecten in Redis?

  4. Krijg alleen een gespecificeerd veld in MongoDB met C#