【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 } )
三、条件操作符
四、查询语法
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}) // 从第二条开始查询返回两条,按年龄升序名称降序