MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB $min

MongoDB a un $min opérateur qui permet de mettre à jour la valeur d'un champ uniquement si la valeur spécifiée est inférieure à la valeur actuelle du champ.

En d'autres termes, si le $min la valeur est inférieure à la valeur actuelle dans le document, le $min valeur est utilisée. Sinon, la valeur du document reste inchangée.

Exemple

Supposons que nous ayons une collection appelée golf avec le document suivant :

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

Et imaginez que nous mettions à jour le document après chaque partie de golf avec le dernier score. Dans ce cas, nous ne voudrions que les strokes champ à mettre à jour si notre dernier score était inférieur que notre score précédent.

Dans ce cas, nous pourrions utiliser le $min opérateur pour atteindre ce résultat.

Exemple :

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

Sortie :

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

Ce message nous indique qu'un document correspond et a été mis à jour.

Vérifions à nouveau la collection.

db.golf.find()

Résultat :

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

Nous pouvons voir que les strokes le champ a été mis à jour avec la nouvelle valeur. En effet, 64 est inférieur à sa valeur précédente de 70.

Lorsque la valeur est supérieure

Lorsque la valeur spécifiée avec $min est supérieure à la valeur existante dans le document, rien n'est mis à jour.

Exemple :

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

Sortie :

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

Nous pouvons voir par le message que rien n'a été mis à jour.

Vérifions à nouveau la collection.

db.golf.find()

Résultat :

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

Nous pouvons voir que la valeur reste à 64, même si nous avons essayé de la mettre à jour à 72. C'est normal, car nous avons utilisé $min .

Dates

Vous pouvez utiliser $min sur les champs de date.

Supposons que nous ayons une collection appelée espèce avec le document suivant :

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

Essayons de mettre à jour la date avec une date postérieure à la date actuelle dans le document.

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

Ici, nous essayons de mettre à jour l'année à partir de 2000 à 2001 . Étant donné que la nouvelle date est postérieure à celle existante, nous obtenons ce qui suit :

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

Rien n'a été mis à jour.

Vérifions la collection :

db.species.find()

Résultat :

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

Comme prévu, la même valeur de date reste.

Essayons maintenant de le mettre à jour avec une date antérieure.

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

Sortie :

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

Nous pouvons voir par le message que le document a été mis à jour.

Vérifions.

db.species.find()

Résultat :

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

La date a été mise à jour comme prévu.