一 开启MongoDB服务 并进入数据库
(1) 开启一个终端
>cd MongoDB的bin目录
cd C:\mongodb\bin
>mongod.exe --dbpath=数据库存放的路径
mongod.exe --dbpath=C:\Users\xlg\PycharmProjects\pythonsh1702\day18\db
(2) 在开启一个终端
>cd MongoDB的bin目录
cd C:\mongodb\bin
>mongo.exe
二 MongoDB
MongoDB将数据存储为文档,数据结构由key=>value 组成 MongoDB文档类似于json 字段值可以包含其他的文档或者是数组
存储的概念(区别)
SQL术语/概念 | MongoDB的术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 行/文档 |
column | field | 数据字段/域 |
primary key | primary key | 主键索引/MongoDB自动将_id设置为主键索引 |
三 对于库的操作
-
查看所有的库
show dbs
-
选择数据库(库存在就选择 不存在就创建)use 库名
当不存在的库创建以后 使用show dbs查看不到的 但是 将当前的库里面创建一个集合当前的库就会显示出来
-
查看当前所在的数据库
db.getName()
注意:
MongoDB 严格区分大小写
四 对于集合的操作
-
创建集合
db.createCollection('集合名称')
db.createCollection('user') #创建一个叫user的集合
-
查看所有的集合
show conllections
-
删除集合
db.集合名.drop()
db.user.drop() #删除user集合
五 INSERT/SAVE 文档的添加
(1) insert 添加文档(添加一条)
db.集合名.insert(文档)
db.user.insert({"name":"张三"})
(2) 插入多条数据
db.集合名.insert([文档1,文档2...])
db.user.insert([{name:"李四",age:20,hobby:"写代码"},{age:18,name:"王五"}])
注意:
如果添加多条文档的时候 []忘记添加 则默认添加第一条文档
(3) save 添加数据
db.user.save({ "name" : "王六" })
(4) save 修改数据(更确切的说 文档的覆盖)
db.user.save({ "_id" : ObjectId("5a1fb5eb9c1f997934c661d4"), "name" : "王六" })
3.2新版本的建议添加
db.collection.insertOne() 添加一条文档
db.collection.insertMany() 添加多条文档
多条文档依然使用[]来添加 否则报错
六 UPDATE修改
db.collection.update(
query,条件
update,
修改的操作符:
1.$inc 累加修改
2.$set 直接修改
{
upsert:boolean,#true 作为新数据插入 默认FALSE
multi:boolean #true,false #true修改全部 默认是FALSE 只修改一条
}
)
主体结构:
db。collection.update({条件},{ $set/$inc:{key:value}})
db.user.update({name:"张三"},{$inc:{age:2}})
upsert 的操作
db.user.update({name:"张三四"},{$set:{age:2}},{upsert:true})
multi 的操作
db.user.update({name:"张三"},{$set:{age:12}},{multi:true})
upsert 和 multi的组合写法
db.user.update({name:"张三"},{$set:{age:12}},true/false,true/false)
3.2以后 建议
db.collection.updateOne() 只修改一条
db.collection.updateMany() 修改多条
七 FIND查询
(1) find 查询所有
db.collection.find() #默认查询所有
db.collection.find({条件},{field:0/1}) #要求那些字段显示或者不显示
0 代表除了它以外的field都显示
1 代表只显示当前的field
错误的写法
db.user.find({},{name:1,age:0})
正确的写法
db.user.find({},{name:1,_id:0})
(2) findOne 查看一条数据
db.collection.findOne({条件},{field:1/0})
(3) count 统计条数
db.collection.find({条件},{field:0/1}).count()
(4) pretty 展开查看
db.user.find().pretty()
(5) 查询条件的操作符
1 $gt > db.collection.find({ age:{ $gt:10}})
2 $gte >= db.collection.find({ age:{ $gte:10}})
3 $lt < db.collection.find({ age:{ $lt:10}})
4 $lte <= db.collection.find({ age:{ $lte:10}})
5 $ne != db.collection.find({ age:{ $ne:10}})
6 { field:值} db.collection.find({ age:10})
7 使用id来查询 ObjectId("5a1fb8b29c1f997934c661d9")
8 /数据/ 模糊查询 db.collection.find({ name:/张/})
9 /^数据/ 以...作为开头 db.collection.find({ name:/^张/})
10 /数据$/ 以...结尾 db.collection.find({ name:/张$/})
11 $in 在...之内 db.collection.find({ age:{ $in:[10,20,30]}})
12 $nin 不在...之内 db.collection.find({ age:{ $nin:[10,20,30]}})
(6) and查询
db.collection.find({key1:val1,key2:val2......})
db.user.find({name:/张/,age:{ $gte:10,$lte:20}})
错误的写法
db.user.find({name:"张三",name:"李四"}) #前面的name被后面的覆盖了
(7) or 的查询
db.collection.find({$or:[{条件1,条件2...}]})
db.user.find({$or:[{name:"张三"},{name:"李四"}]}) #查询name为张三或者李四的所有文档
#查询name为李四 年龄大于10 或 小于20
(8) and 和 or的组合写法
db.collection.find({条件1,条件2..,$or:[{条件1},{条件2}...]})
db.user.find({name:"张三",$or:[{age:{$gte:10}},{age:{$lte:20}}]}) #查询name为张三 并且 年龄为大于等于10或者小于等于20
(9) limit 取值
db.collection.find().limit(num)
db.user.find().limit(3) #从0开始去三条数据
(10) skip 跳过几条数据
db.collection.find().skip(num) #查询数据 跳过num条
通常和limit配合使用
db.collection.find().skip(num).limit(num) #跳过几条数据取几条
(11) sort 排序
db.collection.find().sort({age:1/-1}) #查询数据升序或者降序
db.user.find().sort({age:-1}).limit(1) #取出年龄最大的一条文档
八 REMOVE删除
db.collection.remove({条件},1)
(1) 默认删除所有
db.collection.remove({条件}) #删除所有匹配到的文档
(2) 只删除一条文档
删除一条
db.user.remove({name:"张三"},1)
db.user.remove({name:"张三"},{justOne:true})
(3) 删除所有文档
db.collection.remove({})
3.2版本以后的建议删除的函数
db.collection.deleteOne()
db.collection.deleteMany()
九 删除数据库
删除之前最好去use一下(确定删除你当前所在的数据库)
数据库的退出
exit
十 数据库的备份和恢复
备份:
先启动MongoDB的服务
打开一个新的终端
cd ->MongoDB的bin目录下
mongodump
恢复
先启动MongoDB的服务
mongod.exe --dbpath=新的数据库的路径
打开一个新的终端
cd ->MongoDB的bin目录下
mongorestore