Python工具箱系列(二十九)

2025-12-13 0 537

MongoDB号称文档数据库,是目前发展迅速的NoSQL数据库。它由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引

主要功能特性有:

◆面向集合存储,易存储对象类型的数据。

◆模式自由。

◆支持动态查询。

◆支持完全索引,包含内部对象。

◆支持查询。

◆支持复制和故障恢复。

◆使用高效的二进制数据存储,包括大型对象(如视频等)。

◆自动处理碎片,以支持云计算层次的扩展性。

◆支持Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

◆文件存储格式为BSON(一种JSON的扩展)。

◆可通过网络访问。

其主要场景如下:

◆实时数据处理。它非常适合实时的插入、更新与查询,并具备实时数据存储所需的复制及高度伸缩性。

◆缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。

◆高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,已经包含了对MapReduce引擎的内置支持。

不适用的场景如下:

◆要求高度事务性的系统。

◆传统的商业智能应用。

◆复杂的跨文档(表)级联查询。

MongoDB服务端可运行在Linux、Windows或mac os x平台,支持32位和64位应用,默认端口为27017。推荐运行在64位非Windows平台上。笔者最喜欢的特性之一就是MongoDB具备的灵活的分片机制,配置好的分片机制不仅能够达到负载均衡的目标,而且还能够冗余备份。

Ubuntu bionic下安装

直接使用官网提供的deb文件安装即可。

# server
wget https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-arm64/mongodb-org-server_4.4.15_arm64.deb
# mongos,分片服务器
wget https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/4.4/multiverse/binary-amd64/mongodb-org-mongos_4.4.15_amd64.deb

# setup server
dpkg -i mongodb-org-server_5.0.9_amd64.deb

# 检查相关状态
systemctl status mongod

# 自动启动
systemctl enable mongod

# 使用命令行操作mongodb
mongo

对配置文件/etc/mongod.conf进行修改,以获得远程访问的能力。

MongoDB提供了丰富的命令,专家可以全面操控数据库以及数据,但对于初学者不太友好。为此推荐使用MongoDB官方提供的MongoDBCompass,在windows下载安装即可,随后连接远程MongoDB数据库,使用效果如下图所示:

Python工具箱系列(二十九)

从图中可以看出,服务器在远程,并且通过这个GUI界面,也能够输入命令来操作MongoDB数据库。

Python连接使用MongoDB

用Python操作MongoDB非常方便,无需定义表结构就可以直接将数据插入,使用pymongo模块,可以实现MongoDB与Python的交互。安装命令如下:

pip install pymongo

下述代码示例了创建/使用定制的数据库,并且插入三条记录,并且查询的过程。

import pymongo

client = pymongo.MongoClient(\"mongodb://192.168.0.66:27017\")
print(client.list_database_names())
db = client[\'raindrop\']
collection = db[\'pm25\']

# 增加一条
stu1 = {\'id\': \'001\', \'area\': \'office\', \'pm25\': 8}
result = collection.insert_one(stu1)

# 增加多条
stu2 = {\'id\': \'002\', \'area\': \'field01\', \'pm25\': 15, \"temp\": 10.5}
stu3 = {\'id\': \'003\', \'monitor\': \'wangwu\', \'area\': \'field02\', \'age\': 20}
result = collection.insert_many([stu2, stu3])

# 查询记录
ret = collection.find_one({\'area\': \'office\'})

通过MongoDB Compass可以看到数据库保存了三个文档。

Python工具箱系列(二十九)

由于MongoDB无模式特点,使用起来非常方便,尤其对于半结构化的数据存储特别有利。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 Python工具箱系列(二十九) https://www.zuozi.net/36263.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务