pymongo增删查改教程

mac2024-03-31  40

这篇博客主要介绍了 pymongo 一些常用的操作,包括增删查改。

文章目录

1. MongoDB 的一些基本概念2. pymongo语法(1)连接mongoDB(2)使用特定数据库(3)使用特定集合(表格)(4) 增加数据(5)删除数据(6)查询数据(7)更新文档

1. MongoDB 的一些基本概念

关系型数据库MongoDB数据库数据库(Database)表集合(Collection)行文档(Document),键值对形式列字段(Field),键值对里面的键

2. pymongo语法

(1)连接mongoDB

使用URL连接

import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/")

使用构造函数连接

import pymongo myclient = pymongo.MongoClient(self,localhost,27017)

MongoClient构造函数:

MongoClient( self,

​ host=None,

​ port=None,

​ document_class=dict,

​ tz_aware=None,

​ connect=None,

​ type_registry=None,

​ **kwargs))

(2)使用特定数据库

mydb = myclient[DATABASE_NAME]

若数据库存在:使用特定数据库

若数据库不存在:创建数据库

(3)使用特定集合(表格)

mycol = mydb[COLLECTION_NAME]

若集合存在:使用特定集合

若集合不存在:创建集合

(4) 增加数据

创建数据库

mycol = mydb[COLLECTION_NAME]

创建集合( 表)

mycol = mydb[COLLECTION_NAME]

增加一个文档(1行数据)

mydict = {"id":"0003","name": "王五", "balance": "636", "photo":"data:image/jpeg;base64,/9j/4AAQSk..." } x = mycol.insert_one(mydict)

增加多个文档(多行数据)

mylist = [{ "id":"0003", "name": "王五", "balance": "636", "photo":"data:image/jpeg;base64,/9j/4AAQSk..." },{ "id":"0004", "name": "周六", "balance": "236", "photo":"data:image/jpeg;base64,/9j/4AAQSk..." }] x = mycol.insert_many(mylist)

若制定唯一id值,使用"_id"

(5)删除数据

删除1条数据

myquery = { "name": "张三" } mycol.delete_one(myquery) # 删除后输出 for x in mycol.find(): print(x)

删除多条数据

myquery = { "name": {"$regex": "^F"} } x = mycol.delete_many(myquery) print(x.deleted_count, "个文档已删除")

查找 name 字段所有以 F 开头的文档,删除

删除所有文档

x = mycol.delete_many({}) print(x.deleted_count, "个文档已删除")

delete_many() 方法如果传入的是一个空的查询对象,则会删除集合中的所有文档:

删除集合

mycol.drop()

(6)查询数据

查看所有集合

collist = mydb. list_collection_names() if "sites" in collist: # 判断 sites 集合是否存在 print("集合已存在!")

查询所有文档

for x in mycol.find(): print(x)

查询一条文档

x = mycol.find_one() print(x)

查询集合中的第一条数据

查询指定字段的数据

for x in mycol.find({},{ "_id": 0, "name": 1, "balance": 1}): print(x)

查询制定条件的数据

特值查找

mydoc = mycol.find({ "name": "张三" }) for x in mydoc: print(x)

范围查找

mydoc = mycol.find({ "name": { "$gt": "H" } }) for x in mydoc: print(x)

读取 name 字段中第一个字母 ASCII 值大于 “H” 的数据,大于的修饰符条件为 {"$gt": “H”}

(>) 大于 - $gt(<) 小于 - $lt(>=) 大于等于 - $gte(<= ) 小于等于 - $lte

正则匹配

myquery = { "name": { "$regex": "^R" } } mydoc = mycol.find(myquery) for x in mydoc: print(x)

读取 name 字段中第一个字母为 “R” 的数据,正则表达式修饰符条件为 {"$regex": “^R”} :

查询指定数量的数据:limit() 方法

myresult = mycol.find().limit(3) # 输出结果 for x in myresult: print(x)

(7)更新文档

修改一条数据

myquery = { "name": "张三" } newvalues = { "$set": { "name": "张二狗" } } mycol.update_one(myquery, newvalues) for x in mycol.find(): print(x)

修改多条数据

myquery = { "name": { "$regex": "^F" } } newvalues = { "$set": { "age": "23" } } x = mycol.update_many(myquery, newvalues) print(x.modified_count, "文档已修改")

查找所有以 F 开头的 name 字段,并将匹配到所有记录的 age 字段修改为 23:

最新回复(0)