sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB $min

MongoDB har en $min operator, der kun tillader dig at opdatere værdien af ​​et felt, hvis den angivne værdi er mindre end den aktuelle værdi af feltet.

Med andre ord, hvis $min værdien er mindre end den aktuelle værdi i dokumentet, $min værdi bruges. Ellers forbliver dokumentets værdi uændret.

Eksempel

Antag, at vi har en samling kaldet golf med følgende dokument:

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

Og forestil dig, at vi opdaterer dokumentet efter hvert spil golf med den seneste score. I dette tilfælde vil vi kun have strokes felt, der skal opdateres, hvis vores seneste score var lavere end vores tidligere score.

I dette tilfælde kunne vi bruge $min operatør for at opnå dette resultat.

Eksempel:

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

Output:

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

Denne meddelelse fortæller os, at et dokument matchede og blev opdateret.

Lad os tjekke samlingen igen.

db.golf.find()

Resultat:

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

Vi kan se, at strokes felt blev opdateret med den nye værdi. Dette skyldes, at 64 er lavere end dens tidligere værdi på 70.

Når værdien er højere

Når værdien er angivet med $min er højere end den eksisterende værdi i dokumentet, er intet opdateret.

Eksempel:

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

Output:

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

Vi kan se på beskeden, at intet blev opdateret.

Lad os tjekke samlingen igen.

db.golf.find()

Resultat:

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

Vi kan se, at værdien forbliver på 64, selvom vi forsøgte at opdatere den til 72. Dette forventes, fordi vi brugte $min .

Datoer

Du kan bruge $min på datofelter.

Antag, at vi har en collection kaldet art med følgende dokument:

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

Lad os prøve at opdatere datoen med en dato, der er senere end den aktuelle dato i dokumentet.

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

Her forsøger vi at opdatere året fra 2000 til 2001 . Da den nye dato er senere end den eksisterende, får vi følgende:

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

Intet blev opdateret.

Lad os tjekke samlingen:

db.species.find()

Resultat:

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

Som forventet forbliver den samme datoværdi.

Lad os nu prøve at opdatere den med en tidligere dato.

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

Output:

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

Vi kan se på meddelelsen, at dokumentet blev opdateret.

Lad os tjekke.

db.species.find()

Resultat:

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

Datoen blev opdateret som forventet.


  1. Twitter-lignende app ved hjælp af MongoDB

  2. Opdatering af stien 'x' ville skabe en konflikt ved 'x'

  3. Hvorfor betyder indeksretningen noget i MongoDB?

  4. Skriv din første rådgiver