MongoDB 操作符詳解
阿新 • • 發佈:2018-12-17
欄位類操作符:
$inc:對指定欄位進行加操作; update({ field: value }, { $inc: { field1: amount } } ) // amount:可以為負數 $rename:修改欄位名稱; {$rename: { <old name1>: <newname1>, <old name2>: <new name2>, ... } } $setOnInsert:在upsert為true時,且新增的文件不存在的情況下才會執行;db.collection.update(<query>, { $setOnInsert:{ <field1>: <value1>, ... } }, {upsert: true }) $set:存在就修改,不存在就新增; update({ field: value1 }, { $set: { field1: value2 } } ) $unset:根據條件,刪除field1欄位; update({ field: value1 }, { $unset: { field1: <arg> } } ) // arg為Boolean值,可以為空("")
陣列類操作符:
$addToSet:與push功能差不多,不同的是,如果陣列中已存在該數值將不做任何操作; db.collection.update( { field: value }, {$addToSet: { field: value1 } } ); $pop:刪除指定陣列的第一或最後一個元素,arg=1刪除最後一個,arg=-1刪除第一個; db.collection.update( {field: value }, { $pop:{ field:,<arg> } } ) $pullAll:刪除陣列中的多個元素; db.collection.update( { field: value }, {$pushAll: { field1: [ value1, value2, value3 ] } } ); $pull:刪除陣列(field)中的一個元素(query),如果欄位不是陣列error; db.collection.update( { field: <query> },{ $pull: { field: <query> } } ); $pushAll:將多個數值存入陣列; db.collection.update({ field: value }, { $pushAll: { field1: [ value1, value2, value3 ] } } ); $push:講一個數字存入陣列,存在即新增,不存在建立後新增,如果不是陣列error,一次只能存一個value; db.collection.update(<query>, { $push:{ <field>: <value> }}) // $each:將多個數值一次存入; 結合$addToSet:db.collection.update( <query>, { $addToSet: { <field>: { $each: [ <value1>, <value2>... ]}}}) // 去除重複的然後在一次新增 結合$push:db.collection.update( <query>, { $push:{ <field>: { $each: [ <value1>, <value2> ... ] } }}) // 一次新增 $slice:擷取陣列並更新,結合$push使用,num為0時空陣列賦值,正數取前開始取num位,負數從後面開始取num位;db.collection.update(<query>, { $push: {<field>: {$each: [ <value1>, <value2>, ... ], $slice: <num>}}}) $sort:排序命令,根$push和$each一起使用,且陣列中都是物件,sort根據指定物件的欄位進行排序,1正序,-1倒序; db.collection.update(<query>, { $push:{<field>: {$each: [ <document1>, <document2>, ...], $slice: <num>, $sort: <sort document>,}}}) 例:db.c5.update({_id:1},{$push:{ary:{$each:[{_id:1,score:3},{_id:2,score:5},{_id:3,score:1}],$slice:-5,$sort:{score:-1}}}})