Mongo的三元素
- 三元素:数据库,集合,文档
- 集合就是关系数据库中的表 ,文档对应着关系数据库中的行, 文档就是一个对象,由键值对构成,是json的扩展Bson形式,如{‘name’:‘guojing’,‘gender’:‘男’},数据库是一个集合的物理容器,一个数据库中可以包含多个集合,一个集合包含多个文档, 一个服务器通常有多个数据库
数据库操作
- 查看当前数据库名称
db
查看所有数据库名称
show dbs
切换数据库 ,如果数据库不存在,则指向数据库,但不创建,直到插入数据或创建集合时数据库才被创建
use dbname
数据库删除,删除当前指向的数据库 如果数据库不存在,则什么也不做
db.dropDatabase()
集合操作
- 集合创建,name是要创建的集合的名称,options是一个可选参数,用于指定集合的配置
db.createCollection(name, options)
查看当前数据库的集合
show collections
删除
db.集合名称.drop()
文档操作
- 插入
db.集合名称.insert(document)
db.stu.insert({name:‘aaa’,gender:1})
- 更新
.db.集合名称.update(<query>,<update>, {multi: <boolean>})
- 参数query:查询条件, 参数update:更新操作符,参数multi:可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新
把name="aaa"的文档修改为name=“ccc”
db.stu.update({name:‘aaa’},{name:‘ccc’})
指定属性更新,通过操作符$ set
db.stu.insert({name:‘aaa’,gender:0})
db.stu.update({name:‘aaa’},{$set:{name:‘ddd’}})
修改多条匹配到的数据
db.stu.update({},{$set:{gender:2}},{multi:true})
- 保存
- db.集合名称.save(document)
如果文档的_id已经存在则修改,如果文档的_id不存在则添加
db.stu.save({_id:'20160102','name':'yk',gender:1})
db.stu.save({_id:'20160102','name':'wyk'})
- insert和save都可以添加,区别在于:
insert: 若新增数据的主键已经存在,则会抛出DuplicateKeyException 异常提示主键重复,不保存当前数据。
save: 若新增数据的主键已经存在,则会对当前已经存在的数据进行修改操作
- 删除
db.集合名称.remove(<query>, { justOne: <boolean> })
参数query:可选,表示删除的文档的条件
参数justOne:可选,默认false,表示删除多条,如果设为true或1,则只删除一条,
db.stu.remove({gender:0},{justOne:true})
全部删除
db.stu.remove({})
- 查询(数据查询最主要是"$表达式")
常用方法 (前两种方法的参数都是"条件文档")
-
find(document) #查询返回多条
db.集合名称.find({条件文档}) -
findOne(document):查询,只返回第一个
db.集合名称.findOne({条件文档}) -
pretty():将结果格式化
db.集合名称.find({条件文档}).pretty()
比较运算符
- 默认是等于判断,没有运算符
小于$ lt
小于或等于$ lte
大于$ gt
大于或等于$ gte
不等于$ ne
查询名称等于’gj’的学生
db.stu.find({name:‘gj’})
查询年龄大于或等于18的学生
db.stu.find({age:{$gte:18}})
逻辑运算符
- 查询时可以有多个条件,多个条件之间需要通过逻辑运算符连接,默认是逻辑与的关系
查询年龄大于或等于18,并且性别为1的学生
db.stu.find({age:{$gte:18},gender:1})
逻辑或:使用$ or
查询年龄大于18,或性别为1的学生
db.stu.find({$or:[{age:{$gt:18}},{gender:1}]})
and和or一起使用
查询年龄大于18或性别为0的学生,并且学生的姓名为gj
db.stu.find({$or:[{age:{$gte:18}},{gender:1}],name:'gj'})
范围运算符
- 使用"$ in","$ nin" 判断是否在某个范围内
查询年龄在18~28的学生
db.stu.find({age:{$in:[18,28]}})
判空运算符
- $ exists 就是判断一个字段是否存在。
{ “field”: { “$exists”: <boolean> } }
查询拥有age字段的数据
db.stu.find({age:{$exists:true}})