利用Python操作MongoDB数据库的详细指南
作者:练习时长六年半的Programmer
数据库的分类
数据库可以简单的分为 MySQL
和 NOSQL
两类。这里的 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数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!