1. 程式人生 > >Mongodb欄位更新$max操作符

Mongodb欄位更新$max操作符

一、定義

$max操作符會在指定的值大於欄位值的時候更新掉欄位值,$max操作符可以比較不同的資料型別,使用BSON比較排序規則;

$max操作符有如下的格式:

{ $max: { <field1>: <value1>, ... } }

指定的欄位是在陣列或者內嵌文件中的時候使用點號;

二、規則

如果指定的欄位不存在的話$max操作符會設定當前值為指定的欄位;

三、例如,$max操作符欄位比較

考慮如下的scores文件集合

{ _id: 1, highScore: 800, lowScore: 200 }

如下操作指定highScore欄位值950和當前庫中的值800比較,最後的結果是會將欄位更新為950,因為950比800大
db.scores.update( { _id: 1 }, { $max: { highScore: 950 } } )

修改後的文件集合是:
{ _id: 1, highScore: 950, lowScore: 200 }

下面的操作不會影響到庫中highScore欄位值的變化:
db.scores.update( { _id: 1 }, { $max: { highScore: 870 } } )

操作的結果是:
{ _id: 1, highScore: 950, lowScore: 200 }

四、使用$max操作符進行日期比較

考慮如下tags集合文件

{
  _id: 1,
  desc: "crafts",
  dateEntered: ISODate("2013-10-01T05:00:00Z"),
  dateExpired: ISODate("2013-10-01T16:38:16.163Z")
}

使用$max操作符修改日期欄位dateExpired:
db.tags.update(
   { _id: 1 },
   { $max: { dateExpired: new Date("2013-09-30") } }
)
操作結果是:
{
   _id: 1,
   desc: "decorative arts",
   dateEntered: ISODate("2013-10-01T05:00:00Z"),
   dateExpired: ISODate("2013-10-01T16:38:16.163Z")
}