MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB $min

MongoDB има $min оператор, който ви позволява да актуализирате стойността на поле само ако посочената стойност е по-малка от текущата стойност на полето.

С други думи, ако $min стойността е по-малка от текущата стойност в документа, $min се използва стойност. В противен случай стойността на документа остава непроменена.

Пример

Да предположим, че имаме колекция, наречена golf със следния документ:

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

И си представете, че актуализираме документа след всяка игра на голф с най-новия резултат. В този случай бихме искали само strokes поле за актуализиране, ако последният ни резултат е бил по-нисък от предишния ни резултат.

В този случай бихме могли да използваме $min оператор за постигане на този резултат.

Пример:

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

Изход:

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

Това съобщение ни казва, че един документ съответства и е актуализиран.

Нека проверим колекцията отново.

db.golf.find()

Резултат:

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

Можем да видим, че strokes полето е актуализирано с новата стойност. Това е така, защото 64 е по-ниска от предишната му стойност от 70.

Когато стойността е по-висока

Когато стойността е посочена с $min е по-висока от съществуващата стойност в документа, нищо не се актуализира.

Пример:

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

Изход:

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

По съобщението виждаме, че нищо не е актуализирано.

Нека проверим колекцията отново.

db.golf.find()

Резултат:

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

Можем да видим, че стойността остава на 64, въпреки че се опитахме да я актуализираме до 72. Това се очаква, защото използвахме $min .

Дати

Можете да използвате $min на полета за дата.

Да предположим, че имаме collection наричани видове със следния документ:

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

Нека се опитаме да актуализираме датата с дата, която е по-късна от текущата дата в документа.

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

Тук се опитваме да актуализираме годината от 2000 до 2001 . Като се има предвид, че новата дата е по-късна от съществуващата, получаваме следното:

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

Нищо не е актуализирано.

Нека проверим колекцията:

db.species.find()

Резултат:

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

Както се очакваше, остава същата стойност на датата.

Сега нека се опитаме да го актуализираме с по-ранна дата.

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

Изход:

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

По съобщението можем да видим, че документът е актуализиран.

Да проверим.

db.species.find()

Резултат:

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

Датата беше актуализирана според очакванията.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Какво представлява операторът $unwind в MongoDB?

  2. Lombok - java.lang.StackOverflowError:null за метода toString

  3. Кормило:Достъпът е отказан за разрешаване на свойството от, защото не е собствена собственост на своя родител

  4. Редовен израз за MongoDB ObjectID

  5. MongoDB Schema Design - Много малки документи или по-малко големи документи?