mongoDay15

MongoDB 数据库

非关系型数据库 数据库存储方式为 文档 数据为 键值对形式
mongodb文档类似于json对象 字段的值可以包含其他的文档,数组 以及数组文档

MongoDB 概念解析

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection表/集合
rowdocument行/文档
columnfield数据字段/域
indexindex索引
table joins表关联/MongoDB不支持
primary keyprimary key主键索引/mongodb自动将_id设置为主键索引

一 MongoDB的服务启动 创建数据库

(1) 服务开启

找到你的MongoDB的bin目录

C:\mongodb\bin

在终端输入

cd MongoDB的bin目录

mongod.exe –dbpath=你要选择创建数据库的路径

(2) 进入 MongoDB数据库

cd MongoDB的bin目录

mongo.exe

二 对于库的操作 database

(1) 创建库

use 库名

注意:

  1. 当我use一个不存在的库的时候 其实这个库已经创建出来了 但是里面没有数据 使用show dbs的时候 该库不会显示
  2. mongodb严格区分大小写

在MongoDB里 不管是什么操作 都是db.。。。

show dbs  #获取所有的库
use 库名  #创建一个数据库
db.getName() # 获取当前的所在的库
db.createCollection('user')  #在当前的库里面创建一个 user集合
show collections #查看所有的集合
db.集合名.drop()   #删除集合
db.a.insert({name:"zhangsan",age:18,sex:"w", hobby:"papapa"}) #插入数据
db.a.find()  
db.a.insert([{name:"wangwu"},{name:"zhaoliu"},{name:"Sam"}]) #插入多条数据
db.a.save({"_id" : ObjectId("5a1a5bf8598fb66ba2d114da"),name:"Sam",age:19}) #修改信息
db.a.insertOne({key:value})  #插入一条数据
db.a.insertMany({key:value},{key:value},{key:value})  #插入多条数据
db.a.remove({}) #移除所有数据
db.a.remove({key:value},1) #移除一条数据
db.a.remove({key:value})   #移除匹配到的所有数据
db.a.deleteOne({key:value})  #删除一条数据
db.a.deleteMany({key:value})   #删除多条数据
db.a.find()  #查询所有
db.a.find({name:"Sam",age:54})  #查询满足条件的数据
db.a.find({key:value}).pretty   #查询所有符合条件的数据
db.a.find({key:value},{_id:0,key1:1,key2:1})  #id键默认1查询符合条件的数据并显示key值,1为显示,0为隐藏
db.a.find().count()  #统计所有数据条数
db.a.find({age:{$gt:30}}) #条件查询






(2) 删除数据库
  1. 删除数据库之前最好use一下 确定自己所在哪个库下
  2. db.dropDatabase()
(3) 查看所有的库

show dbs

三 对于集合的操作 collection

(1) 创建集合(也就是创建表)

db.createCollection(‘集合名称’)

如:

​ db.createCollection(‘user’) #在当前的库里面创建一个 user集合

(2) 删除集合

db.集合名.drop()

如:

db.user.drop() #删除user集合

(3) 显示所有集合

show collections

四 INSERT/SAVE 文档的插入

(1) insert的插入一条文档

db.集合名.insert(文档)

(2) insert 插入多条文档

db.集合名.insert([文档1[,文档2]])

注意:

如果没有中括号 那么只会将第一条数据 插入成功

(3) save (更多的来说是作为修改 但是可以作为文档的插入)

db.集合名.save(文档) 插入一条文档

db.集合名.save({“_id” : ObjectId(“5a152a67fa08a5e7ad2ad092”),zzz:’vvv’}) #将id为92的文档 进行覆盖

3.2版本以后 建议使用
db.collection.insertOne()
db.collection.insertMany()

五 REMOVE文档删除

(1) 只删除一条数据

db.collection.remove(条件,1)

db.user.remove({name:”张三”},1) #会删除第一个匹配到的文档

(2) 删除多条数据

db.collection.remove(条件)

db.user.remove({name:”张三”}) #删除多条文档

(3) 全部删除

db.collection.remove({}) #删除当前集合的全部文档

3.2版本以后 建议使用
db.collection.deleteOne() #删除一条文档
db.collection.deleteMany() #删除多条文档

六 FIND 查询

(1) 查询所有
db.collection.find() 查询所有
db.collection.find({条件},{key1,1[,key2,1]}) 按照条件来查询 设置某些键的显示

​ db.user.find({name:”王五”},{name:1}) #查询所有name为王五的文档 只显示name的值

db.collection.find({条件},{key1,0[,key2,0]}) 按照条件来查询 除了key1 key2以外的键值对 都显示

​ db.user.find({name:”王五”},{name:0}) #查询所有name为王五的文档 显示 name键值对以外的所有的值

​ db.user.find({},{key:1}) #条件是 查询所有 只显示某个键值对

注意:

错误的混搭写法:

db.user.find({name:"王五"},{age:1,name:0})

_id 键 默认返回 _id:0 隐藏

除了设置系统的_id 可以混搭外 其它都不可以
db.user.find({name:"王五"},{_id:0,name:1}) #id隐藏 只显示 name的键值对
(2) findOne 查询一条数据

db.collection.findOne({条件},{key1:1[key:1]})

(3) count 统计

db.collection.find().count() 统计所有文档的条数

db.user.find({name:”王五”}).count() 统计满足条件的文档的条数

(4) pretty 展开显示

db.collection.find().pretty()

注意:

只有当文档一行显示不下(比较长的时候) 会展开显示

(5) and 逻辑与查询

db.user.find({name:’赵六’,age:54}) 查询 name为赵六 并且 age为54的文档

db.user.find({name:”赵六”,age:{$gt:40}}) 查询name为赵六 并且年龄大于40

db.user.find({age:{$gte:18,$lte:40}},{_id:0,age:1}) 查询年龄在18-40之间

(6) or 逻辑或

$or

db.user.find({$or:[{name:”王五”},{age:40}]}) 查询name为王五 或者age为40的文档

db.user.find({$or:[{name:”王五”},{name:”赵六”}]}) 查询name为王五或者赵六的所有文档

(7) and 和 or 一起使用
db.collection.find( { 键:值[,键:值] , $or:[ {键值对1} , {键值对2}] })

db.user.find({name:”王五”,$or:[{age:30},{age:40}]}) 查询name为 王五 年龄为30或者40的所有文档

(8) limit 取值

db.collection.find().limit(num) #从0去 num条数据

db.user.find().limit(3) #取三条数据

(9) skip 跳过几条文档

db.collection.skip(num) #跳过num条文档

db.user.find().skip(9) #跳过9条数据

(10) skip 和 limit 配合使用

db.collection.find().skip(num).limit(num)

db.user.find().skip(8).limit(1) #跳过8条数据 取1条 limit m,n

(11) sort 排序

db.collection.find().sort(key:1/-1) #按照key的升序/降序

db.user.find().sort({age:-1}) 按照年龄 降序显示

db.user.find().sort({age:-1}).limit(1) #取出一条年龄最大的文档

七 条件操作符

操作符说明使用
gt       |    大于     | db.user.find({age:{gt:30}},{age:1})年龄>30
gte      |   大于等于    | db.user.find({age:{gte:30}},{age:1})年龄>=30
lt       |    小于     | db.user.find({age:{lt:30}},{age:1})年龄<30
lte      |   小于等于    | db.user.find({age:{lte:30}},{age:1})年龄<=30
键:值等于db.user.find({age:30})
_id:objectId()id来查询db.user.find({“_id” : ObjectId(“5a162218fa08a5e7ad2ad09c”)})
/数据/ $regex模糊查询db.user.find({name:/李/})
/^数据/以数据作为开头db.user.find({name:/^李/})
/数据/      |  以数据作为结尾  |        db.user.find({name:/五/})
in       | 在...范围之内  |    db.user.find({age:{in:[23,30]}})
nin      | 不在...范围之内 | db.user.find({name:{nin:[‘王五’,’赵六’]}})
ne       |    不等于    |     db.user.find({name:{ne:’王五’}})

八 update 修改

db.collection.update(条件,修改的操作,{upsert:bool,multi:bool})

upsert:bool: 默认FALSE 如果修改的数据不存在 TRUE为插入 FALSE为不插入**

multi:bool: 默认FALSE 只修改匹配到的第一条 TRUE为修改全部

$set 直接修改
$inc 累加修改
直接修改 修改一条

db.user.update({name:”潘金莲”},{$set:{age:20}}) #把name为潘金莲的文档的age直接改为20

累加修改 修改多条

db.user.update({name:”王五”},{$inc:{age:3}},{multi:true})

直接修改文档 文档不存在 则插入

db.user.update({name:”xxx”},{$set:{age:100}},{upsert:true})

3.2版本以后 建议
updateOne() 只更新一条
updateMany() 更新多条

九 数据库的备份

(1) 备份

在原来的服务里 新打开一个终端

cd ->mongodb->bin下

mongodump

此刻 你的bin目录下就会有一个dump的文件夹

(2) 恢复

新打开一个终端 开启mongodb服务

在新建一个终端

cd ->mongodb->bin下

mongorestore

这样数据就回来了

十 MySQL的备份

(1) 备份

>mysqldump -u用户名 -p 导出的数据库的名称>导出以后的库的名称.sql

>输入密码

(2) 数据的恢复

>mysql -u用户 -p 导入的库名<外部备份的SQL文件.sql

>输入密码

注意:

备份和恢复的命令不要再mysql里去执行 因为这个不是mysql的命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值