活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
学习日记
目录
一、前言介绍
1、类比
SQL:结构化查询语言.用于操作关系型数据库。
NoSQL:非关系型数据库。不能使用SQL。
MongoDB数据库是一种NoSQL数据库,是一个开源的数据库系统。
2、MongoDB特点:
(1)用于web用户的数据存储
(2)数据结构:key - value
(3)存储文档类似于JSON
二、安装MongoDB库
在win+r输入cmd后输入指令下载
pip install pymongo
这样即安装完成。
三、MongoDB相关
1、概念
2、数据类型
Warn:
每个文档都有一个不同的属性(_id),保证每个文档的唯一性。可手动设置_id的值,没有手动设置则会自动提供一个独特的_id,类型为objectID。objectID是一个12字节的十六进制数,每个字节两位,一共是24位的字符串:
前4个字节(8位)为时间戳
接下来的3个(6位)是机器ID
再然后2个(4位)是MongoDB服务进程ID
最后3个(6位)是简单的增量值
四、 MongoDB的基本使用
1、启动MongoDB服务端
启动/停止/重启: sudo service mongod start/stop/restart
验证数据库是否正常启动: grep -v '#' /etc/mongod.conf
启动方式: sudo mongod [--dbpath] [--logpath] [--append] [--fork] [--auth] [-f]不带参数时,要手动创建数据存储目录/data/db
--dbpath:指定数据库的存储路径
--logpath:指定日志的存放路径
--append:设置日志的写入形式为追加
--fork:开启新的进程运行MongoDB服务
--auth:以权限认证的方式启动
-f 路径:设置配置文件路径
验证是否启动成功: ps -aux | grep mongod
2、启动MongoDB客户端
启动:mongo
退出:exit
查看帮助:mongo -help
五、MongoDB常用命令
1、数据库操作
查看当前数据库:db
查看所有数据库:show dbs
切换数据库:use 数据库名
删除当前数据库:db.dropDatabase()
2、集合操作
自动创建集合: 向不存在的集合中第一次添加数据时,集合会被自动创建
手动创建:
db.createCollection("集合名")db.createCollection("集合名",{capped:true,size:x})
capped:默认值为false,表示没有上限,true则为设置上限
size:集合所占用的最大上限字节数,超出上限则会覆盖之前的数据
查看集合:show collections
删除集合:db.集合名.drop()
检查集合是否设有上限:db.集合名.isCapped()
六、MongoDB的增删改查
1、增(插入数据)
单条插入:db.集合名.insert({数据})
db.name.insert({"cjl":19})多条插入:db.集合名.insert([{数据1},{数据2}])
db.name.insert([{"cjl":19},{"syf":20}])
2、删(删除数据)
db.集合名.remove({查询条件},{justOne:boolean})
justOne:默认false删除全部符合条件的,true删除一条
db.name.remove({"age":18},{justOne:true})
3、改(修改数据)
保存:db.集合名.save({_id:"xxx"})
通过_id定位到数据,如果存在则修改该数据,不存在则新增该数据
db.name.save({_id:"xxx","name":"cjl"})更新:db.集合名.update({查询条件},{更新操作符},{multi:boolean})
multi:默认false只更新第一条,true全部更新,必须和$set一起使用全文档覆盖更新:
db.name.update({name:'x'},{name:'y'})指定键值更新:
db.name.update({name:'x'},{$set:{name:'y')}}更新全部:
db.name.update({},{$set:{age:18}},{multi:true})
4、查(查询数据)
db.集合名.find({条件}) 查询该集合内的所有符合条件的数据
.pretty() 格式化输出
db.集合名.findOne({条件}) 查询该集合内的第一条数据
db.集合名.find({条件}).count() 统计个数查询
db.集合名.distinct("xxx",{条件}) 去除重复查询
相关查询条件:比较运算符:
小于:$lt 小等:$lte
大于:$gt 大等:$gte
不等:$ne逻辑运算符:
与关系:$and
简洁格式:db.name.find({age:{$gt:18},sex:true})
复杂格式:db.name.find({$and:[{age:{$gt:18},sex:true}]})
或关系:$or
db.name.find({$or:[{age:{$gt:18},sex:true}]})范围运算符:
包含:$in
db.name.find({age:{$in:[18,19,20]}})
不包含$nin
db.name.find({age:{$nin:[18,19,20]}})
正则表达式:
正则表达式:$regex
db.name.find({name:{$regex:'^c'}})
七、Python连接MongoDB
通常有两种方式连接MongoDB数据库,一种是通过指定地址和端口直接连接,另一种是将连接地址拼接成URI的格式进行连接。
1、指定地址和端口连接
import pymongo client = pymongo.MongoClient(host='localhost',port=3717,username='root',password='root') # 连接数据库 db = client.testDatabase # 连接到users集合 users= db.users print(db.list_collection_names()) # 获取数据库中所有集合名称 print(users.count()) # 统计users集合的文档数
2、通过URI连接
URI的格式:
mongodb://username:password@ip:port
import pymongo uri = "mongodb://root:root@localhost:3717" client = pymongo.MongoClient(uri) # 连接数据库 db = client.testDatabase # 连接到users集合 users= db.users print(db.list_collection_names()) # 获取数据库中所有集合名称 print(users.count()) # 统计users集合的文档数