Fork me on GitHub

【MongoDB入门】

一、基础语法

      1.查看所有数据库

        show dbs

      2.查看当前所在数据库

         db

      3.如果数据库不存在,则创建数据库,否则切换到指定数据库

         use test //创建test数据库

      3.集合操作(切换数据库后db对象为当前的数据库对象)

         db.dropDatabase()                              #删除数据库

         db.createCollection("user")                  #创建user表(集合)

         show collections/show tables                #查看所有集合                                         

         db.集合名称.drop()                               #删除集合

         db.集合名称.insert({"name":"xxx"})      #如果集合不存在直接创建集合并插入数据

         db.集合名称.remove({})                       #删除所有数据

         db.集合名称.remove({"name":”xxx”})   #删除所有匹配数据

         db.集合名称.remove({'name':'11111'},{'justOne':true}) #删除匹配的第一条

         db.user.update({'name':'xxx'},{$set:{'name':'yyy'}},{multi:true})  #找到所有name是xxx的修改为yyy
         db.user.update({'name':'xxx'},{$inc:{'age':1}},{multi:true})          #找到所有name是xxx的修改为age加1
     db.user.update({'name':'wangguang'},{$set:{'name':'11111'}},{'upsert':true}) #查不到数据时新增一条
         db.user.update({'name':'aaa'},{$push:{'hobby':'100'}})  //数组类型追加元素
      db.user.update({'name':'bbb'},{$push:{'hobby':{$each:['666','888']}}})  //数组类型追加多个元素
         db.user.update({'name':'aaaa'},{$set:{'name':'aaa'},$push:{'hobby':'1'}})  //修改普通字段和数组
         db.user.update({'name':'bbb'},{$push:{'hobby':{$each:['999','888'],$sort:-1,$slice:3}}}) 
               //追加数据数据后,降序排序,截取前三个
         db.test01.update({'name':'aaaa'},{$pull:{'hobby':'2'}})   //删除数组里面的2 此处不能用$eq
         db.test01.update({'name':'aaaa'},{$pull:{'hobby':{$in:['2','3']}}})   //删除数组多个元素

二、进阶语法

        1.创建集合时指定参数

         db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
     image

三、条件操作符

  

四、查询语法

      image

     db.user.find().pretty()  // 相当于select * from user

     db.user.find({'age':{$gt:20}})  //大于20  age的冒号可以省略

     db.user.find({'age':{$gte:20}}) //大于等于20

     db.user.find({'age':{$lt:20}})   //小于20

     db.user.find({'age':{$lte:20}}) //小于等于20

     db.user.find({'age':{$eq:20}}) //等于20

     db.user.find({'age':{$ne:20}}) //不等于20

     db.user.find({'name':/aa/}) //name中包含aaa

     db.user.find({'name':/^aa/}) //name中以aa开头

     db.user.find({'name':/aa$/}) //name中以aa结尾

     db.user.find({'hobby':{$in:['2','8']}}) //in查询

     db.user.find({'hobby':{$nin:['2','8']}}) //not in查询

     db.user.find({'hobby':{$all:['2','8']}})  //同时满足 即有2也有8

     db.user.find({'name':{$type:'string'}}) //name是string类型的

     db.user.find({$or:[{'name':'aaa'},{'name':'bbb'}]})  // where name ='aaa' or name = 'bbb'

     db.user.find({$and:[{'age':{$gt:30}},{$or:[{'name':'aaa'},{'name':'bbb'}]}]})

         //相当于  where age>30 and (name ='aaa' or name = 'bbb')

     db.user.find('age':{$not:{$eq:25}})       //不等于25 等价于$ne

     db.user.find({'name':{$exists:true}})    //包含字段name的文档 包含name值为null的文档

     db.user.find({'name':{$nin:[null,'']}})  //name非空判断

     db.user.find({$nor:[{'name':null},{'name':''}]})  //name非空判断

     db.user.find({$and:[{$where:"this.age>30"},{$where:"this.age<60"}]}) //age大于30小于60 也可以函数返回

     db.user.find({$where:function(){ if(this['hobby'].includes('7')){ return true; }else{ return false; } }})

        //hobby数组包含7的文档返回,尽量不适用where效率低

     db.user.find({'hobby':{$elemMatch:{$eq:'7'}}})  //hobby数组里面至少有一个元素等于7

     db.user.find({'hobby':{$size:3}})                       //hobby数组长度为3的文档返回

     db.user.find().limit(2).skip(1).sort({'age':1,'name':-1})  // 从第二条开始查询返回两条,按年龄升序名称降序

posted @ 2020-05-07 14:07  mankeu  阅读(139)  评论(0编辑  收藏  举报