wangming1993 / issues

记录学习中的一些问题,体会与心得 https://wangming1993.github.io/issues
8 stars 4 forks source link

MongoDB 更新高级应用 #27

Open wangming1993 opened 8 years ago

wangming1993 commented 8 years ago

MongoDB 更新 api

$setOnInsert

如果_update_时指定了 upsert:true, 在没有找到文档时将会插入一个文档, 而 $setOnInsert 指定的字段值将会被应用到新的文档中,

如果查询到文档, 那么只会进行更新, $setOnInsert 指定的值不起任何作用

db.collection.update(
   <query>,
   { $setOnInsert: { <field1>: <value1>, ... } },
   { upsert: true }
)

$rename

给字段重命名, 可以使用 . 为嵌入式文档命名

db.collection.update(
    <query>,
    {$rename: { <field1>: <newName1>, <field2>: <newName2>, ... } }
)

$rename 相当于 $unset$set 的组合, 因此并不能保证文档field的顺序. 如果field不存在, 那么不会做任何操作.

$max

更新文档的值, 如果指定的值大于文档的当前值

db.collection.update(
    <query>,
    { $max: { <field1>: <value1>, ... } }
)