MongoDB之运算符

1.  比较运算符

    1.  等于

        db.student.find({age: {$eq: 20}});

    2.  大于

        db.student.find({age: {$gt: 20}});

    3.  小于

        db.student.find({age: {$lt: 20}});

    4.  不等于

        db.student.find({"age": {$ne:25}});  

    5.  包含

        db.student.find({"name": {$in:["liudehua","liming"]}});

    6.  不包含

        db.student.find({"name": {$nin:["liudehua","liming"]}});

    7.  大于等于

        db.student.find({age: {$gte: 20}});

    8.  小于等于

        db.student.find({age: {$lte: 20}});

2.  逻辑运算符

    1.  与

        db.student.find({"name":"zhangxueyou","age" : 26});

        name为zhangxueyou,并且age是26            

    2.  或

        db.student.find({$or: [{name:"liudehua"},{age:25}]});

    3.  非

        db.student.find({"name": {$not:{$in:["liudehua","liming"]}}});

    4.  是否存在

        db.student.find({"name": {$exists:true}});  查询age字段存在的文档

    5.  类型查询

        db.student.find({"name": {$type:2}});  查询name字段为string类型的文档

        

3.  评估运算符

    1.  取模

        db.student.find({"age":{$mod:[5,0]}});  取出age除以5等于0的文档

    2.  正则查询

        db.student.find({"name":/^zhan/});               

4.  update运算符

    1.  $set  用于指定修改的字段和值

        db.student.update({"name":"yangjianbo"},{$set:{"love":[20,38,30,58,89]}});  将name为yangjianbo的文档的love的值,修改为[20,38,30,58,89]                        

    2.  $unset  取消文档某个字段  

        db.student.update({"name":"zhangxueyou","age":26},{$unset:{"company":"milanyi"}});  将name为zhangxueyou并且age为26的文档的company字段,取消                        

    3.  $inc  用于增加或减少数值  

        db.student.update({"name":"akun"},{$inc:{age:60}});  将name为akun的age增加60,看清楚是增加60,不是增加到60

        db.student.update({"name":"akun"},{$inc:{age:-80}});  将name为akun的age减少80,减少80,不是减少到80                        

    4.  $rename  修改字段名称

        db.student.update({"name":"zhangxueyou"},{$rename:{"age":"nianling"}}); 

    5.  $mul  用于乘法运算

        db.student.update({"name":"akun"},{$mul:{"age":5}});

    6.  $setOnInsert  如果文档不存在,就插入数据;存在就没有任何操作

        db.student.update({"name":"akun2"},{$setOnInsert:{"age1":5}},{upsert:true});        

    7.  $min  如果min的值比当前值小,就替换当前值;否则,不操作

        db.student.update({"name":"akun"},{$min:{"age":35}});

    8.  $max  如果max的值比当前值大,就替换当前值;否则,不操作

        db.student.update({"name":"akun"},{$max:{"age":50}});

    9.  $currentDate  插入当前时间

        db.student.update({"name":"akun"},{$currentDate:{"mydate":{$type:"date"}}});

        db.student.update({"name":"akun"},{$currentDate:{"mydate":{$type:"timestamp"}}});              

5.  数组操作运算符

    db.student.insert({"name":"yangjianbo","love":[30,50,85,100,135]});    

    1.  数组单元素查询

        db.student.find({"love":30});  love数组中包含30的文档                

    2.  数组多元素查询

        db.student.find({"love":{$all:[30,50]}});  love数组中同时包含30和50的文档(会查出至少包含30,50的文档)

    3.  数组长度

        db.student.find({"love":{$size:5}});  love数组是5个元素的文档

    4.  元素查询

        db.student.find({"love":{$elemMatch:{$gt:40,$lt:90}}});  love数组中的元素大于40小于90的文档

    5.  $pop  删除数组中的最后一个元素或者第一个元素

        db.student.update({"name":"houzhen"},{$pop:{"love":1}});  最后一个元素

        db.student.update({"name":"houzhen"},{$pop:{"love":-1}});  第一个元素

    6.  $pull  删除数组中满足条件的元素    

        db.student.update({"name":"houzhen"},{$pull:{"love":"wss"}});                                                

    7.  $push  在数组中添加一个元素,只能添加一个元素,即使插入多个元素,也只插入最后一个元素

        db.student.update({"name":"houzhen"},{$push:{"love":"wss"}});

    8.  $pullAll  删除数组中的多个元素

        db.student.update({"name" : "houzhen"},{$pullAll:{"love":["jd","dst"]}});

    9.  $pushAll  从2.4版本,已经不再使用

        使用$push和$each结合

        db.student.update({"name" : "houzhen"},{$push:{"love":{$each:["jd","dst"]}}});                                       

    10.  $addToSet  添加一个元素到数组中,但是不能添加已存在的元素,只能添加数组中没有的元素

        db.student.update({"name" : "houzhen"},{$addToSet:{"love":"m"}});        

    11.  $each  与push结合使用,用于插入多个元素到数组中  

        db.student.update({"name" : "houzhen"},{$push:{"love":{$each:["jd","dst"]}}});

    12.  $slice  只返回数组的部分数据

        db.student.find({},{"love":{$slice:2}});  只返回love数组的前两个元素

        db.student.find({},{"love":{$slice:-2}});  只返回love数组的后两个元素

    13.  $sort  用于插入数组时的元素的排序,必须跟$each结合使用

        db.student.update({"name" : "yangjianbo"},{$push: {"love":{$each:[102,300],$sort:1}}});  插入两个元素,并升序结果

        db.student.update({"name" : "yangjianbo"},{$push: {"love":{$each:[102,300],$sort:-1}}});  插入两个元素,并降序结果   

    14.  $position  指定元素插入数组的位置,从0开始

        db.student.update({"name" : "yangjianbo"},{$push: {"love":{$each:[128,66],$position:1}}});        

    15.  $bit

    16.  $  确定数组中一个要被更新的元素的位置        

创建一个文档
db.students.insert([
   { "_id" : 1, "grades" : [ 85, 80, 80 ] },
   { "_id" : 2, "grades" : [ 88, 90, 92 ] },
   { "_id" : 3, "grades" : [ 85, 100, 90 ] }
])

更新数组中的文档
db.students.updateOne(
   { _id: 1, grades: 80 },
   { $set: { "grades.$" : 82 } }
)             

6.  高级查询$where              

    db.student.find({$where:"this.age>20"});  查看age大于20的所有文档

    db.student.find({$where:"this.name == 'yangjianbo' "});  查看name是yangjianbo的文档

    db.student.find({$where:"this.name != 'yangjianbo' "});  查看name不是yangjianbo的所有文档               

posted @ 2022-08-23 10:32  奋斗史  阅读(781)  评论(0)    收藏  举报