MongoDB介绍
MongoDB是一种面向文档型的非关系型数据库(NoSQL),由C++编写。非关系数据库中是以键值对存储,结构不固定,易存储,减少时间和空间的开销。文档型数据库通常是以JSON或XML格式存储数据,而Mongodb使用的数据结构是BSON(二进制JSON),和JSON相比,BSON提高了存储和扫描效率,但空间占用会更多一些。
官方的自述:现代应用程序的数据库
MongoDB 是一个通用的、基于文档的分布式数据库,专为现代应用程序开发人员和云时代而构建。
MongoDB 是一个文档数据库,这意味着它将数据存储在类似 JSON 的文档中。我们相信这是思考数据的最自然的方式,并且比传统的行/列模型更具表现力和强大。
丰富的 JSON 文档
-
最自然、最高效的数据处理方式。
-
支持数组和嵌套对象作为值。
-
允许灵活和动态的模式。
{
"_id": “5cf0029caff5056591b0ce7d”,
“firstname”: “Jane”,
“lastname”: “Wu”,
“address”: {
“street”: “1 Circle Rd”,
“city”: “Los Angeles”,
“state”: “CA”,
“zip”: “90404”
},
“hobbies”: [“surfing”, “coding”]
}
强大的查询语言
-
丰富而富有表现力的查询语言,允许您按任何字段进行过滤和排序,无论它在文档中如何嵌套。
-
支持聚合和其他现代用例,例如基于地理的搜索、图形搜索和文本搜索。
-
查询本身就是 JSON,因此很容易组合。不再需要连接字符串来动态生成 SQL 查询。
db.users.find({ “address.zip” : “90404” })
{ “_id”: “5cf0029caff5056591b0ce7d”, “firstname”: “Jane”, “lastname”: “Wu”, “address”: { “zip”: “90404” } }
{ “_id”: “507f1f77bcf86cd799439011”, “firstname”: “Jon”, “lastname”: “Davis”, “address”: { “zip”: “90404” } }
{ “_id”: “5349b4ddd2781d08c09890f3”, “firstname”: “Jim”, “lastname”: “White”, “address”: { “zip”: “90404” } }
{ “_id”: “5bf142459b72e12b2b1b2cd”, “firstname”: “Jeff”, “lastname”: “Taylor”, “address”: { “zip”: “90404” } }
{ “_id”: “5cf003283b23d04a40d5f88a”, “firstname”: “Jerry”, “lastname”: “Miller”, “address”: { “zip”: “90404” } }
{ “_id”: “5bf142459b72e12b2b1b2cd”, “firstname”: “Jai”, “lastname”: “Williams”, “address”: { “zip”: “90404” } }
{ “_id”: “5cf0036deaa1742dd225ea35”, “firstname”: “Jess”, “lastname”: “Johnson”, “address”: { “zip”: “90404” } }
{ “_id”: “54495ad94c934721ede76d90”, “firstname”: “Jill”, “lastname”: “Brown”, “address”: { “zip”: “90404” } }
{ “_id”: “566eb3c704c7b31facbb0007”, “firstname”: “Janet”, “lastname”: “Jones”, “address”: { “zip”: “90404” } }
{ “_id”: “5a999cc461d36489a27f2563”, “firstname”: “Jan”, “lastname”: “Smith”, “address”: { “zip”: “90404” } }
关系数据库的所有功能
-
具有快照隔离的分布式多文档 ACID 事务。
-
支持查询中的连接。
-
两种类型的关系而不是一种:引用和嵌入。
session.start_transaction()
order = { line_items : [ { item : 5, quantity: 6 } ] }
db.orders.insertOne( order, session=session );
for x in order.line_items:
db.inventory.update(
{ _id : x.item } ,
{ $inc : { number : -1 * x.quantity } },
session=session
)
session.commit_transaction()
MongoDB安装
肯定有小伙伴发现使用Python操作MongoDB时,发现没有数据怎么办?
两种方法:1.将MongoDB下载安装本地;2.MongoDB官方自带的云学习平台,无需安装MongoDB,直接使用(建议尝试)
Cloud 云端 (本篇重点)
建议尝试原因:Free免费 完全不用自己本地安装一个,直接用云端服务来学习,完全可以,就是要注册一个账号(很正常)
连不上?网慢?你都是程序猿了,不会用梯子?
1)注册账号
注册MongoDB官网的账号 也可以使用Google账号
2)创建项目
-
填写项目的名称
-
选择你的开发语言
-
选择你的云端的类型,就如同阿里云服务器一个意思,这里面你可以选择Free免费机器。
-
选择服务器的公司和地区,随便选,选择一个你能连接上的
3)配置连接项
-
添加你的本地IP,连接服务的本地IP,就是白名单,你想如何地方都可以连接,请设置:0.0.0.0/0 这个就是有点危险
-
数据库连接账号User
-
选择一个连接方法
4)三种连接方法
第一种,Shell窗口
-
根据你的系统平台,下载工具
-
配置系统环境
-
打开shell窗口,将代码复制粘贴,回车,输入密码,就连接到MongoDB服务了。
第二种,运用代码驱动 第一次测试的时候,遇到了个小问题: pymongo.errors.ConfigurationError: The “dnspython” module must be installed to use mongodb+srv:// URIs 提示需要安装 “dnspython”
解决方法: pip3 install pymongo[srv] 或 pip3 install dnspython
Python 连接 MongoDB 成功!
第三种,可视化工具 MongoDB Compass Community:比较流行的MongoDB管理工具列表 可视化工具都不用找了,直接提供了一个最流行的工具,学习工作用这个工具足够了!
下载本地
根据自己的情况,选择版本,操作系统平台,包的类型,点击下载即可,自学下载社区版就可以。