一.基本命令(shell中操作)
- 查看当前数据库:db
- 查看所有数据库:show dbs/show databases;
- 切换数据库:use db_name
- 删除当前数据库:db.dropDatabase()
- 手动创建集合
- db.createCollection(name,options)
- db.createCollection('stu')
- db.createCollection('stb',{capped:true,size:10})
- capped为true表示设置上限,false为无上限
- capped为true时,需要设置size,表示上限大小,当达到上限,会将之前数据覆盖,单位为字节
- 查看集合:show collections
- 删除集合:db.集合名称.drop()
二.常见数据类型
- Object ID
- String
- Boolean
- Integer
- Double
- Arrays
- Object
- Null
- Timestamp
- Date
三.mongodb增删改查
- 增
- db.集合名称.insert(document)
- db.stu.insert({name:'gj',gender:1})
- db.stu.insert({_id:"20170101",name:"gj",gender:1})
- db.集合名称.insert(document)
- 保存
- db.集合名称.save(document)如果文档_id已经存在则修改,不存在则添加
- 简单查询
- db.集合名称.find()
- 更新
- db.集合名称.update(<query>,<update>,{multi:<boolean>})
- 参数query:查询条件
- 参数update:更新操作
- 参数multi:默认false,表示之更新找到的第一条,true为满足条件的文档全部更新
- db.stu.update({name:'hr'},{name:'mcn'})更新一条
- db.stu.update({name:'hr'},{$set:{name:'hys'}})更新一条
- db.stu.update({},{$set:{gender:0}},{multi:true}) 更新全部
- mongodb高级查询
- 数据查询
- finde():查询
- db.集合名.find({条件文档})
- findOne():查询,只返回第一个
- db.集合名称.findOne({条件文档})
- 方法pretty():将结果格式化
- db.集合名称.find({条件文档}).pretty()
- finde():查询
- 比较运算符(db.stu.find({age:{$gte:18}}))
- 等于,默认是等于,没有运算符
- 小于:$lt(less than)
- 小于等于:$lte
- 大于:$gt
- 大于等于:$gte
- 不等于:$ne
- 逻辑运算符
- and:json中写多个条件即可
- 查询年龄大于等于18,并且性别为true的学生
- db.stu.find({age:{$gte:18},gender:true})
- 查询年龄大于等于18,并且性别为true的学生
- or:使用$or,值为数组,每个元素为json
- 查询年龄大于18,或性别为false的学生
- db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'gj'})
- 查询年龄大于18,或性别为false的学生
- and:json中写多个条件即可
- 范围运算符
- $in,$nin判断数据是否在某个数组内
- 查询年龄为18,28的学生
- db.stu.find({age:{$in:[18,28,3]}})
- 查询年龄为18,28的学生
- $in,$nin判断数据是否在某个数组内
- 正则查询
- 使用//或者$regex编写正则
- 查询sku以abc开头的数据
- db.products.find({sku:/^abc/}
- 查询sku以789结尾的数据
- db.products.find({sku:{$regex:'789$}})
- 查询sku以abc开头的数据
- 使用//或者$regex编写正则
- skip和limit
- limit():读取指定数量的文档
- db.集合名称.find().limit(NUMBER)
- db.stu.find().limit(2)
- 方法skip():用于跳过指定数量的文档
- db.集合名称.find().skip(number)
- db.stu.find().skip(2)
- db.集合名称.find().skip(number)
- db.集合名称.find().limit(NUMBER)
- limit():读取指定数量的文档
- 投影(查询到的结果中选择必要的字段,1为现实,0为不显示)
- db.集合名称.find({},{字段名:1,...})
- 排序(1为升序,-1为降序)
- db.集合名称.find().sort({字段:1,...})
- 统计个数
- count()
- db.stu.find({gender:true}).count()
- db.stu.count({age:{$gt:20},gender:true})
- 消除重复
- distinct()对数据进行去重
- db.集合名称.distinect(‘去重字段’,{条件})
- db.stu.distinct('hometown',{age:{$gt:18}})
- db.集合名称.distinect(‘去重字段’,{条件})
- distinct()对数据进行去重
- 数据查询