MongoDB
一 开启MongoDB服务 并进入数据库
(1) 开启一个终端
>cd MongoDB的bin目录python
cd C:\mongodb\binmongodb
>mongod.exe --dbpath=数据库存放的路径数据库
mongod.exe --dbpath=C:\Users\xlg\PycharmProjects\pythonsh1702\day18\dbjson
(2) 在开启一个终端
>cd MongoDB的bin目录数组
cd C:\mongodb\bin数据结构
>mongo.exe函数
二 MongoDB
MongoDB将数据存储为文档,数据结构由key=>value 组成 MongoDB文档相似于json 字段值能够包含其余的文档或者是数组spa
存储的概念(区别)
SQL术语/概念 | MongoDB的术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 行/文档 |
column | field | 数据字段/域 |
primary key | primary key | 主键索引/MongoDB自动将_id设置为主键索引 |
三 对于库的操做
-
查看全部的库rest
show dbscode
-
选择数据库(库存在就选择 不存在就建立)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