利用Python操作MongoDB数据库的详细指南

 更新时间:2023年02月08日 14:26:21   作者:练习时长六年半的Programmer  
MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,下面这篇文章主要给大家介绍了关于利用Python操作MongoDB数据库的相关资料,需要的朋友可以参考下

数据库的分类

数据库可以简单的分为 MySQLNOSQL 两类。这里的 NOSQL 不是 NO SQL 的意思,他的意思是 Not Only MySQL

MySQL与NoSQL之间的区别:

1、MySQL是一个基于表格设计的关系数据库,而NoSQL本质上是非关系型的基于文档的设计。

2、MySQL数据库,覆盖了巨大的IT市场;具有固定市场的MySQL数据库包含一个庞大的社区。而NoSQL数据库是最新的到来,与MySQL相比,社区正在慢慢发展。

3、MySQL的严格模式限制并不容易扩展,而NoSQL可以通过动态模式特性轻松扩展。

4、MySQL中创建数据库之前需要详细的数据库模型,而在NoSQL数据库类型的情况下不需要详细的建模。

5、MySQL提供了大量的报告工具,可以帮助应用程序有效,而NoSQL数据库缺少用于分析和性能测试的报告工具。

6、MySQL是一个关系数据库,其设计约束灵活性较低;而NoSQL本质上是非关系型的,与MySQL相比,它提供了更灵活的设计。

7、MySQL中使用的标准语言是SQL;而NoSQL中缺乏标准的查询语言。

mongodb是什么

mongodb是一种数据库,它可以储存键值对类型的数据(json,字典)。目前流行的数据库是 MySQL ,但它并不利于初学者入门。我之前发过 Tinydb,Sqlite3 等数据库的讲解,都比较简单,那我这次来发一下mongodb数据库。

mongodb 的数据库、集合

一个数据库下可以有多个集合,集合里存储数据。集合可以理解为 SQL 数据库中的表。

使用Python操作mongodb

安装 mongodb

终端运行

pip install pymongo

连接数据库

client = pymongo.MongoClient(host, port)

host是地址,port 是端口。

切换数据库 第一种方法

db_name = client['db_name']

其中 db_name 是你的数据库名。

第二种方法

db_name = client.get_database('db_name')

其中 db_name 是你的数据库名。

第三种方法

db_name = client.db_name

切换集合

db_name.test

其中 test 是集合名,没有这个集合会自动创建。

添加数据

def add_data(data):
    result = db_name.test.insert_one(data)
    print(result.inserted_id)

其中 test 是集合名。

添加数据用 insert_one 方法。

其中,data 是要插入的数据,它的类型是键值对,即 Python 中的字典。这是一条合法的 data

{"name":"XiaoMing","password":123456}

特殊的,如果要插入在指定 id ,可以这样写

result = db_name.test.insert_one({_id:1,"xxx":"xxx",...})

也可以插入多个,只需要把 data 变成

[{"name":"XiaoMing","password":123456},{"name":"XiaoHong","password":123456}]

删除数据

db.test.remove(查询表达式, isJustOne)

查询表达式有这些

语法操作格式
$eq等于{:}
$lt小于{:{$lt:}}
$lte小于或等于{:{$lte:}}
$gt大于{:{$gt:}}
$gte大于或等于{:{$gte:}}
$ne不等于{:{$ne:}}
$or{$or:[{},{}]}
$in在范围内{age:{$in:[val1,val2]}}
$nin不在范围内{age:{$nin:[val1,val2]}}

例如,删除 test 集合中 name 是 XiaoMing 的所有数据

db.test.remove({<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->name:"XiaoMing"})

修改数据

db.collection.update(查询表达式,新值,选项) 选项: {upsert : true/false, multi : ture/false}

  • upsert:默认为 false , 作用:无相应记录是否insert,与mysql中的replace同
  • multi:默认为 false , 作用:是否作用于多条
#替换文档,将name为zhangsan的第一个文档替换为{"name":"lisi","age":10}
db.stu.update({"name":"zhangsan"},{"name":"lisi","age":10})
$set修改器,指定要更新的key,key不存在则创建,存在则更新。
#将name为zhangsan的所有文档替换为{"name":"lisi","no":'100'}
db.stu.update({"name":"zhangsan"},{$set:{"name":"lisi","no":'100'}},{multi:true})

查找数据

#查找所有数据
db.集合名.find()
# 查找到所有匹配数据
db.集合名.find({条件文档})
# 只返回匹配的第一个数据
db.stu.find({age:{$gt:16}}) #查询年龄大于16的记录
db.stu.find({$or:[{age:{$gt:18}},{name:"xiaoming"}]) #查询年龄大于18或者名字是xiaoming的记录
#使用$where后面写一个函数,返回满足条件的数据
db.stu.find({$where:function(){return this.age>20}})
#用于读取指定数量的文档
db.集合名称.find().limit(NUMBER)
#对查询结果排序(参数1升序,参数-1降序)
db.集合名称.find().sort({字段:1,...}) 
#统计结果中的文档数
db.集合名称.find({条件}).count()

到此这篇关于利用Python操作MongoDB数据库的详细指南的文章就介绍到这了,更多相关Python操作mongodb数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现蒙特卡洛算法小实验过程详解

    Python实现蒙特卡洛算法小实验过程详解

    这篇文章主要介绍了Python实现基于蒙特卡洛算法过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 使用Python实现 学生学籍管理系统

    使用Python实现 学生学籍管理系统

    这篇文章主要介绍了使用Python实现 学生学籍管理系统,代码大致分为五个函数组成,具体内容详情本文给大家介绍的非常详细,需要的朋友可以参考下
    2019-11-11
  • Python socket模块ftp传输文件过程解析

    Python socket模块ftp传输文件过程解析

    这篇文章主要介绍了Python socket模块ftp传输文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • python list转矩阵的实例讲解

    python list转矩阵的实例讲解

    今天小编就为大家分享一篇python list转矩阵的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Python中map和列表推导效率比较实例分析

    Python中map和列表推导效率比较实例分析

    这篇文章主要介绍了Python中map和列表推导效率比较,实例分析了Python中的map与列表的推导效率,需要的朋友可以参考下
    2015-06-06
  • windows下python和pip安装教程

    windows下python和pip安装教程

    这篇文章主要为大家详细介绍了windows下Python和pip安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Python中的lstrip()方法使用简介

    Python中的lstrip()方法使用简介

    这篇文章主要介绍了Python中的lstrip()方法使用简介,是Python入门的基础知识,需要的朋友可以参考下
    2015-05-05
  • python中matplotlib的颜色及线条控制的示例

    python中matplotlib的颜色及线条控制的示例

    这篇文章主要介绍了python中matplotlib的颜色及线条控制的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 在NumPy中创建空数组/矩阵的方法

    在NumPy中创建空数组/矩阵的方法

    今天小编就为大家分享一篇在NumPy中创建空数组/矩阵的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • python使用socket实现的传输demo示例【基于TCP协议】

    python使用socket实现的传输demo示例【基于TCP协议】

    这篇文章主要介绍了python使用socket实现的传输demo,结合实例形式分析了Python使用socket库基于TCP协议实现的客户端与服务器端相关操作技巧,需要的朋友可以参考下
    2019-09-09

最新评论