Python操作MongoDB数据库
Posted 醉蕤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python操作MongoDB数据库相关的知识,希望对你有一定的参考价值。
活动地址: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集合的文档数
python操作MongoDB
本文详细的介绍了在python里如何操作MongoDB数据库
在python里操作MongoDB其实很简单主要分三部分
1.连接MongoDB数据库
2.指定数据库
3.指定集合
接下来我们就详细的看一看数据库的连接及插入操作吧:
数据库连接.py
import pymongo #连接 MongoDB client=pymongo.MongoClient(host=‘localhost‘,port=27017) #第二种连接方式 #client=pymongo.MongoClient(‘mongodb://localhost:27017/‘) #指定数据库 db=client.test #第二种指定方式 #db=client[‘test‘] #指定集合 collection=db.students #collection=db[‘students‘] #插入数据 student={ ‘id‘:‘201812121‘, ‘name‘:‘ltf‘, ‘age‘:‘21‘, ‘gender‘:‘male‘ } result=collection.insert(student) print(result) student1={ ‘id‘:‘201812122‘, ‘name‘:‘lsq‘, ‘age‘:‘21‘, ‘gender‘:‘female‘ } student2={ ‘id‘:‘201812123‘, ‘name‘:‘lhw‘, ‘age‘:‘20‘, ‘gender‘:‘male‘ } result1=collection.insert([student1,student2]) print(result1) student3={ ‘id‘:‘201812124‘, ‘name‘:‘bz‘, ‘age‘:‘21‘, ‘gender‘:‘female‘ } student4={ ‘id‘:‘201812125‘, ‘name‘:‘zn‘, ‘age‘:‘20‘, ‘gender‘:‘male‘ } result2=collection.insert_many([student3,student4]) print(result2) print(result2.inserted_ids) #查询数据 result3=collection.find_one({‘name‘:‘ltf‘}) print(type(result3)) print(result3)
接下来就是数据库查询操作,主要有find_one和find方法,
import pymongo #连接 MongoDB client=pymongo.MongoClient(host=‘localhost‘,port=27017) #指定数据库 db=client.test #指定集合 collection=db.students #查询数据 result=collection.find_one({‘name‘:‘ltf‘}) print(type(result)) print(result) #查询多条数据 results=collection.find({‘age‘:‘20‘}) print(results) for result in results: print(result) print(‘====‘*20) #查询年龄大于20 resultss=collection.find({‘age‘:{‘$gt‘:‘20‘}}) for result1 in resultss: print(result1) print(‘====‘*20) #正则匹配查询 results=collection.find({‘name‘:{‘$regex‘:‘^ltf.*‘}}) for result in results: print(result) #属性是否存在 results=collection.find({‘name‘:{‘$exists‘:True}}) for result in results: print(result) #文本查询 results=collection.find({‘$text‘:{‘$search‘:‘ltf‘}}) print(results)
除此之外还有其他各种各样的方法:
import pymongo #连接 MongoDB client=pymongo.MongoClient(host=‘localhost‘,port=27017) #指定数据库 db=client.test #指定集合 collection=db.students #计数 count=collection.find().count() print(count) #统计所有数量 count=collection.find({‘age‘:‘20‘}).count() print(count) #统计年龄为20的数量 #排序 results=collection.find().sort(‘name‘,pymongo.ASCENDING) print([result[‘name‘]for result in results]) #升序 results=collection.find().sort(‘name‘,pymongo.DESCENDING) print([result[‘name‘]for result in results]) #降序 #偏移 results=collection.find().sort(‘name‘,pymongo.ASCENDING).skip(2) print([result[‘name‘]for result in results]) #升序偏移2 即从第三个数据开始输出 results=collection.find().sort(‘name‘,pymongo.ASCENDING).skip(2).limit(8) print([result[‘name‘]for result in results]) #升序偏移2 即从第三个数据开始输出 limit限制8个 #更新 condition={‘name‘:‘ltf‘} student=collection.find_one(condition) student[‘age‘]=‘25‘ result=collection.update(condition,student) print(result) ‘‘‘ #删除 result=collection.remove({‘name‘:‘bz‘}) print(result) #成功一个 result=collection.delete_one({‘name‘:‘zn‘}) print(result) print(result.deleted_count) #删除bn result=collection.delete_many({‘age‘:{‘$gt‘:‘20‘}}) print(result.deleted_count) #删除bn ‘‘‘
以上就是pymongo的各种各样的方法的一些简单用法了
以上是关于Python操作MongoDB数据库的主要内容,如果未能解决你的问题,请参考以下文章