1. 程式人生 > >MongoDB 操作符詳解

MongoDB 操作符詳解

 欄位類操作符:

$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}}}})