数据库操作
一、查看所有的数据库
show db / show databases
二、查看当前正则使用的数据库
db # (默认正在使用test数据库)
三、创建数据库 / 切换数据库
use # (若没有此数据库 自动创建)
四、删除数据库(当前)
db.dropDatabase()
集合相关
一、查看当前数据中的集合
show collcetion
二、创建集合
- 自动创建集合
# 向不存在的集合中第一次加入数据时,集合会被创建出来
- 手动创建集合
格式: db.createCollection(集合名称,集合中文档数据)
不加数据: db.createCollection("jh_name")
加数据: db.createCollection("jh_name", { key : value } )
三、删除数据
db.集合名称.drop()
文档相关
一、常见类型
- Object ID: ⽂档ID
- String: 字符串, 最常⽤, 必须是有效的UTF-8
- Boolean: 存储⼀个布尔值, true或false
- Integer: 整数可以是32位或64位, 这取决于服务器
- Double: 存储浮点值
- Arrays: 数组或列表, 多个值存储到⼀个键
- Object: ⽤于嵌⼊式的⽂档, 即⼀个值为⼀个⽂档
- Null: 存储Null值
- Timestamp: 时间戳, 表示从1970-1-1到现在的总秒数
- Date: 存储当前⽇期或时间的UNIX时间格式
二、注意:
- 每个⽂档都有⼀个属性, 为==_id==,保证每个⽂档的唯⼀性,mongodb默认使用_id作为主键。可以⾃⼰去设置_id插⼊⽂档,如果没有提供,那么MongoDB为每个⽂档提供了⼀个独特的_id, 类型为objectID。
MonGodb 增删改查
一、增加数据
MongoDB 可用insert()或 save()两种方法向集合中插入文档
- insert()
db.集合名称.insert(document)
- save()
db.集合名称.save(document)
两个方法区别在于insert()在插入数据主键重复时会报错,而save()不会报错会自动将重复进行改成
二、查询数据
db.集合名称.find({}).pretty() # pretty()可以格式化查询出的数据,加与不加都可以
三、 数据更新
db.集合名称.update(<query> ,<update>,{multi: <boolean>})
- 参数query:查询条件
- 参数update:更新操作符
- 参数multi:可选, 默认是false,表示只更新找到的第⼀条记录, 值为true表示把满⾜条件的⽂档全部更新
- 查询到的第1条用新的文档进行覆盖
db.集合名称.update({name:'原数据'},{name:'新数据'})
- 指定键值更新操作
db.stu.update({name:'原数据'},{$set:{name:'原数据'}})
- 更新全部
db.stu.update({},{$set:{gender:0}},{multi:true})
注:$set是方式数据修改后直接覆盖
四、删除
db.集合名称.remove(<query>,{justOne: <boolean>})
- 参数query:可选,删除的⽂档的条件
- 参数justOne:可选, 如果设为true或1, 则只删除⼀条, 默认false, 表示删除多条
进阶查询
一、比较运算符
- 等于: 默认是等于判断, 没有运算符
- ⼩于:$lt (less than)
- ⼩于等于:$lte (less than equal)
- ⼤于:$gt (greater than)
- ⼤于等于:$gte
- 不等于:$ne
二、逻辑运算符
and:在json中写多个条件即可
# 查询年龄⼤于或等于18, 并且性别为true的人
db.stu.find({age:{$gte:18}, gender:true})
or:使⽤$or, 值为数组, 数组中每个元素为json
# 查询年龄⼤于18或性别为男⽣, 并且姓名是XX
db.stu.find({$or:[{age:{$gt:18}},{gender:true}], name:"XX"}).pretty()
三、范围运算符
使⽤$in, $nin 判断数据是否在某个数组内
例如:
# 查询年龄为18、 30的人
db.stu.find({age:{$in:[18,30]}})
四、支持正则表达式
使⽤//或$regex编写正则表达式
例如:
# 查询以“X”开始的信息
db.stu.find({name:/^X/}).pretty()
五、指定域查询
# 只输出name和age域,第一个参数为查询条件,空代表查询所有
db.stu.find( {}, { name: 1, age: 1 } )
# 默认_id是显示的,可以通过设为0不显示
db.stu.find( {}, { name: 1, age: 1 ,_id:0} )
# 如果需要输出的字段比较多,不想要某个字段,可以用排除字段的方法
# 不输出内容字段,其它字段都输出
db.stu.find({}, {_id:0})
六、自定义查询
- 由于mongo的shell是一个js的执行环境 使⽤$where后⾯写⼀个函数, 返回满⾜条件的数据
# 查询30岁以上的人
db.stu.find({
$where:function() {
return this.age>30;
}
})