Description
Add $min/max update modifiers which leave/replace the existing field based on the comparison of a provided value.
Note: if the field is missing then the value supplied will replace it like it was specified via a $set.
Examples:
> db.v.find()
|
{_id:1, v:1}
|
{_id:2, v:2}
|
{_id:3}
|
{_id:4}
|
> db.v.update({_id:1}, {$min: {v: 2}} // do not change the doc, existing value is smaller |
> db.v.update({_id:1}, {$min: {v: 0}} // set v to 0 |
> db.v.findOne({_id:1})
|
{_id:1, v:0}
|
|
> db.v.update({_id:2}, {$max: {v: 1}} // do not change the doc, existing value is larger |
> db.v.update({_id:2}, {$max: {v: 2}} // do not change the doc, existing value is the same |
> db.v.update({_id:2}, {$max: {v: 200}} // set v to 200 |
> db.v.findOne({_id:2})
|
{_id:2, v:200}
|
|
> db.v.update({_id:3}, {$min: {v: 2}} // set v to 2 |
{_id:3, v:2}
|
> db.v.update({_id:4}, {$max: {v: 2}} // set v to 2 |
{_id:4, v:2}
|
old description
I'm working on a realtime website performance analysis tool, were a number of parallel processes import data into a mongodb instance.
In this context, it would be extremely helpful to have $max and $min update operators which would work similar to $inc.
{ $min :
{ field : value }}
sets field to new value if field does not exist or value is smaller than current field value.
{ $max :
{ field : value }}
sets field to new value if field does not exist or value is larger than current field value.
Attachments
Issue Links
- depends on
-
SERVER-6399 Refactor update() code
-
- Closed
-
- related to
-
DOCS-2012 $min/$max update operators
-
- Closed
-