Python 操作mongodb库

简介: MongoDB 是一个基于分布式文件存储的数据库。

Python 操作mongodb库



文章目录


1 mongodb介绍


1.1 mongodb基础概念

1.2 mongodb优缺点

2 mongodb 下载安装

3 python 操作mongodb

3.1 python 安装pymongo库

3.2 Python对 mongodb增删改查


1 mongodb介绍


MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决


MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。


1.1 mongodb基础概念


在mongodb中是通过数据库、集合、文档的方式来管理数据,下边是mongodb与关系数据库的一些概念对比:

image.png

1、一个mongodb实例可以创建多个数据库

2、一个数据库可以创建多个集合

3、一个集合可以包括多个文档。

微信图片_20221012213618.png

1.2 mongodb优缺点

优点:
1.读写效率高:由于文档模型把相关数据集中在-块,在普通机械盘上读数据的时候不用花太
多时间去定位磁头,因此在IO性能上有先天独厚的优势
2.可扩展能力强:关系型数据库很难做分布式的原因就是多节点海量数据关联有巨大的性能问
题。如果不考虑关联,数据分区分库,水平扩展就比较简单;
3.动态模式:文档模型支持可变的数据模式,不要求每个文档都具有完全相同的结构,例如在
同一个文档中支持同一一个字段拥有不同的数据类型,对很多异构数据场景支持非常好。
4.模型自然:文档模型最接近于我们熟悉的对象模型,支持数组和嵌套对象作为值。从内存到
存储,无需经过ORM的双向转换,性能上和理解上都很自然易懂。
5.强大的查询语言:丰富而富有表现力的查询语言,使您可以按任意字段进行过滤和排序,无
论它在文档中有多嵌套。支持聚合和其他现代用例,例如基于地理的搜索,图形搜索和文本搜
索。查询本身就是JSON ,因此很容易组合。不再需要串联字符串来动态生成SQL查询。
缺点:
与关系型数据库,比如mysq|截然不同的查询语法,需 要重新学习mongodb的操作语法。 哈哈

2 mongodb 下载安装


可以看 无羡 博主的内容 MongoDB数据库入门到精通


3 python 操作mongodb


随着不断的学习内容python也安装了很多库,使用之前如何查找是否已经安装了该库可以将将已安装的库列表保存到文本文件夹中 然后去文件里搜索是否已经安装了

pip freeze >C:\Users\Administrator\Desktop\install.txt

安装文本文件中所有库

pip install -r  C:\Users\Administrator\Desktop\install.txt

3.1 python 安装pymongo库


普通安装 :

pip install pymongo

卸载已安装的库:

pip uninstall pymongo

3.2 Python对 mongodb增删改查

1. 导入pymongodb 模块:import pymongo
待补充

代码

import pymongo
#   建立连接
client = pymongo.MongoClient()
#   指定数据库   (不存在则会新建)
db = client['py_mongo']
#   删除数据库
# client.drop_database('py_mongo_temp')
#   创建集合
# db.create_collection('col_temp')
#   删除集合
# print(db.drop_collection('col_temp'))
#   指定集合     (不存在则会新建)
collection = db['mongo_col']
# collection = pymongo.MongoClient()['py_mongo']['mongo_col']

insert() 、 remove() 、 update() 、 find()

#   增   insert()
#   如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId
#   增加一条
# collection.insert({'_id':1,'name':'JiYu','num':0})
#   增加多条
# collection.insert(  [
#     {'name':'jiyu','num':12},
#     {'name':'jiyu','num':34},
#     {'name':'nianhua','num':12},
#     {'name':'nianhua','num':34},
# ]   )
#   删   remove()
#   删除集合中满足条件的所有文档
# collection.remove({'name':'jiyu'})
#   只删除集合中满足条件的第一条文档
# collection.remove({'name':'nianhua'},multi=False)
#   删除所有
# collection.remove()
#   改   update()
#   修改一条数据  只有name,没有num了,整条数据变成<update>里的内容
# collection.update({'name':'jiyu'},{'name':'nianhua'})
#   指定属性修改  $set
# collection.update({'name':'jiyu'},{'$set':{'name':'nianhua'}})
#   修改集合中所有满足条件的文档:multi: true
# collection.update({'name':'nianhua'},{'$set':{'name':'NianHua'}},multi=True)
#   查   find()
#   查询所有
# for i in collection.find():
#     print(i)
#   根据条件查询
# for i in collection.find({'name': 'NianHua'}):
#     print(i)
#   and 和 or 条件
# condition = {'$or': [{'num': 12}, {'name': 'NianHua'}]}
# for i in collection.find(condition):
#     print(i)
#   操作符
# for i in collection.find({'num': {'$gt': 20}}):
#     print(i)



相关文章
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
2213 103
|
10月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
2187 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
10月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
911 0
|
12月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
9月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
864 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
9月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
635 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
780 20
|
11月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
688 18
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
839 51
|
11月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
1007 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程