深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析

Python MongoDB 排序

对结果进行排序

使用 sort() 方法对结果进行升序或降序排序。 sort() 方法接受一个参数用于"字段名",一个参数用于"方向"(升序是默认方向)。

示例

按名称按字母顺序对结果进行排序:

python 复制代码
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

mydoc = mycol.find().sort("name")

for x in mydoc:
  print(x)

Python MongoDB 删除文档

删除文档

要删除一个文档,我们使用 delete_one() 方法。 delete_one() 方法的第一个参数是一个查询对象,用于定义要删除的文档。注意:如果查询找到多个文档,仅删除第一个出现的文档。

示例

删除地址为"Mountain 21"的文档:

python 复制代码
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

myquery = { "address": "Mountain 21" }

mycol.delete_one(myquery)

删除多个文档

要删除多个文档,使用 delete_many() 方法。 delete_many() 方法的第一个参数是一个查询对象,用于定义要删除的文档。

示例

删除所有地址以字母S开头的文档:

python 复制代码
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

myquery = { "address": {"$regex": "^S"} }

x = mycol.delete_many(myquery)

print(x.deleted_count, " documents deleted.")

删除集合中的所有文档

要删除集合中的所有文档,请将一个空的查询对象传递给 delete_many() 方法:

示例

删除"customers"集合中的所有文档:

python 复制代码
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

x = mycol.delete_many({})

print(x.deleted_count, " documents deleted.")

Python MongoDB 删除集合

删除集合

您可以使用 drop() 方法删除表,或者在 MongoDB 中称为集合。

示例

删除"customers"集合:

python 复制代码
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

mycol.drop()

如果成功删除集合, drop() 方法将返回 true,如果集合不存在,则返回 false

Python MongoDB 更新

更新集合

您可以使用 update_one() 方法更新记录,或者在 MongoDB 中称为文档。 update_one() 方法的第一个参数是一个查询对象,用于定义要更新的文档。注意:如果查询找到多个记录,仅更新第一个出现的记录。第二个参数是一个对象,定义文档的新值。

示例

将地址从"Valley 345"更改为"Canyon 123":

python 复制代码
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

myquery = { "address": "Valley 345" }
newvalues = { "$set": { "address": "Canyon 123" } }

mycol.update_one(myquery, newvalues)

# 更新后打印 "customers":
for x in mycol.find():
  print(x)

更新多个

要更新满足查询条件的所有文档,请使用 update_many() 方法。

示例

更新所有地址以字母"S"开头的文档:

python 复制代码
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

myquery = { "address": { "$regex": "^S" } }
newvalues = { "$set": { "name": "Minnie" } }

x = mycol.update_many(myquery, newvalues)

print(x.modified_count, "documents updated.")

Python MongoDB 限制结果

为了在 MongoDB 中限制结果,我们使用 limit() 方法。 limit() 方法接受一个参数,即定义要返回多少个文档的数字。

假设你有一个"customers"集合:

python 复制代码
Customers
{'_id': 1, 'name': 'John', 'address': 'Highway 37'}
{'_id': 2, 'name': 'Peter', 'address': 'Lowstreet 27'}
{'_id': 3, 'name': 'Amy', 'address': 'Apple st 652'}
{'_id': 4, 'name': 'Hannah', 'address': 'Mountain 21'}
{'_id': 5, 'name': 'Michael', 'address': 'Valley 345'}
{'_id': 6, 'name': 'Sandy', 'address': 'Ocean blvd 2'}
{'_id': 7, 'name': 'Betty', 'address': 'Green Grass 1'}
{'_id': 8, 'name': 'Richard', 'address': 'Sky st 331'}
{'_id': 9, 'name': 'Susan', 'address': 'One way 98'}
{'_id': 10, 'name': 'Vicky', 'address': 'Yellow Garden 2'}
{'_id': 11, 'name': 'Ben', 'address': 'Park Lane 38'}
{'_id': 12, 'name': 'William', 'address': 'Central st 954'}
{'_id': 13, 'name': 'Chuck', 'address': 'Main Road 989'}
{'_id': 14, 'name': 'Viola', 'address': 'Sideway 1633'}

示例

将结果限制为只返回5个文档:

python 复制代码
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

myresult = mycol.find().limit(5)

# 打印结果:
for x in myresult:
  print(x)

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取

最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关推荐
Hylan_J1 小时前
【VSCode】MicroPython环境配置
ide·vscode·python·编辑器
月光水岸New1 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6751 小时前
数据库基础1
数据库
莫忘初心丶1 小时前
在 Ubuntu 22 上使用 Gunicorn 启动 Flask 应用程序
python·ubuntu·flask·gunicorn
我爱松子鱼1 小时前
mysql之规则优化器RBO
数据库·mysql
闲猫1 小时前
go orm GORM
开发语言·后端·golang
丁卯4042 小时前
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
服务器·后端·golang
chengooooooo2 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser3 小时前
【SQL】多表查询案例
数据库·sql
Galeoto3 小时前
how to export a table in sqlite, and import into another
数据库·sqlite