python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python操作mongodb数据库

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

作者:练习时长六年半的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}

#替换文档,将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数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文