## 等于 : {key : value}
## 小于 : {key : {$lt : value}}
## 小于或等于 : {key : {$lte : value}}
## 大于 : {key : {$gt : value}}
## 大于或等于 : {key : {$gte : value}}
## 不等于 : {key : {$ne : value}}
## 存在 : {key : {$in: [, , ... ]}}
## 不存在 : {key : {$nin: [ , ... ]} }
## AND : {key1: value1, key2 : value2}
## OR : {key : value, $or: [{key1 : value1},{key2 : value2}]}
## NOT : {key : {$not: { } } }
## NOR : {$nor: [{}, {}, ... {}]}
## exists : {key : {$exists: } }
## type : {key : {$type: | } } 例:db.addressBook.find( { "key" : { $type : "string" } } );
## mod : {key : {$mod: [divisor(除数), remainder(余数)]}} 例:db.inventory.find( { qty: { $mod: [ 4, 0 ] } } )
## regex : {key : {$regex: /pattern/, $options: '' } }
## text : {$text:{$search: , $language: , $caseSensitive: , $diacriticSensitive: }}
## $where
## $all : {key : {$all: [ , ... ] } } // 字段值必须全部包括才满足
## elemMatch : {key : {$elemMatch: {, , ...}}} // 字段值有一个满足就满足
## size : db.collection.find({key: {$size: num}}); // 字段的元素个数等于指定的值(num)
## $ : db.students.find({key1: 1, key2: {$gte: 85}}, { "grades.$": 1 }) // 返回查询结果的第1个字段
## $elemMatch : db.schools.find({key1: "63109"}, {key2: {$elemMatch: {key2-1: "102"}}}) // 根据第一个查询条件查询出结果,然后根据第二个条件进行筛选满足结果的第一条数据;
例:{ "_id" : 1, "key2" : [ { "name" : "john", "key2-1" : 102, "age" : 10 } ] }
{ "_id" : 3 }
{ "_id" : 4, "key2" : [ { "name" : "barney", "key2-1" : 102, "age" : 7 } ] }
## slice : db.collection.find({key: value}, {array: {$slice: count}}); // 控制array数组返回结果的个数
$inc:对指定字段进行加操作; update({ field: value }, { $inc: { field1: amount } } ) // amount:可以为负数
$rename:修改字段名称; {$rename: { : , : , ... } }
$setOnInsert:在upsert为true时,且添加的文档不存在的情况下才会执行;db.collection.update(, { $setOnInsert:{ : , ... } }, {upsert: true })
$set:存在就修改,不存在就添加; update({ field: value1 }, { $set: { field1: value2 } } )
$unset:根据条件,删除field1字段; update({ field: value1 }, { $unset: { field1: } } ) // arg为Boolean值,可以为空("")
$addToSet:与push功能差不多,不同的是,如果数组中已存在该数值将不做任何操作; db.collection.update( { field: value }, {$addToSet: { field: value1 } } );
$pop:删除指定数组的第一或最后一个元素,arg=1删除最后一个,arg=-1删除第一个; db.collection.update( {field: value }, { $pop:{ field:, } } )
$pullAll:删除数组中的多个元素; db.collection.update( { field: value }, {$pushAll: { field1: [ value1, value2, value3 ] } } );
$pull:删除数组(field)中的一个元素(query),如果字段不是数组error; db.collection.update( { field: },{ $pull: { field: } } );
$pushAll:将多个数值存入数组; db.collection.update({ field: value }, { $pushAll: { field1: [ value1, value2, value3 ] } } );
$push:讲一个数字存入数组,存在即添加,不存在创建后添加,如果不是数组error,一次只能存一个value; db.collection.update(, { $push:{ : }}) //
$each:将多个数值一次存入;
结合$addToSet:db.collection.update( , { $addToSet: { : { $each: [ , ... ]}}}) // 去除重复的然后在一次添加
结合$push:db.collection.update( , { $push:{ : { $each: [ , ... ] } }}) // 一次添加
$slice:截取数组并更新,结合$push使用,num为0时空数组赋值,正数取前开始取num位,负数从后面开始取num位;db.collection.update(, { $push: {: {$each: [ , , ... ], $slice: }}})
$sort:排序命令,根$push和$each一起使用,且数组中都是对象,sort根据指定对象的字段进行排序,1正序,-1倒序; db.collection.update(, { $push:{: {$each: [ , , ...], $slice: , $sort: ,}}})
例: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}}}})
参考1:https://blog.csdn.net/mengxiangyue/article/details/18560357?utm_source=blogxgwz0
参考2:https://blog.csdn.net/sinat_29091823/article/details/75050950