最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

全球快资讯丨Python工具箱系列(二十九)

来源:博客园

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文件安装即可。

# serverwget 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 serverdpkg -i mongodb-org-server_5.0.9_amd64.deb # 检查相关状态systemctl status mongod# 自动启动systemctl enable mongod# 使用命令行操作mongodbmongo

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

cat /etc/mongod.conf |grep bindsed -i "s/127.0.0.1/0.0.0.0/g" /etc/mongod.confcat /etc/mongod.conf |grep bindsystemctl restart mongodsystemctl status mongod

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

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

二、Python连接使用MongoDB

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

pip install pymongo

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

import pymongoclient = 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"})print(ret)

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

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

关键词: