首页 > 数据库 >深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析

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

时间:2024-01-15 21:47:10浏览次数:34  
标签:mycol Python MongoDB myclient 文档 address 排序 mydb name

Python MongoDB 排序

对结果进行排序

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

示例

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

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”的文档:

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开头的文档:

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”集合中的所有文档:

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”集合:

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”:

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”开头的文档:

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”集合:

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个文档:

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,关注后即可获取

最新文章推送

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

标签:mycol,Python,MongoDB,myclient,文档,address,排序,mydb,name
From: https://www.cnblogs.com/xiaowange/p/17966414

相关文章

  • Python第三天学习笔记
    执行Python的两种形式第一种:交互式,在cmd中运行优点:直接给出结果缺点:无法保存jupyter对这一种进行了封装第二种:命令行式,通过cmd中输入Python3文本.txt文件可以,.py文件也可以,命令行式可以识别任何文本文件优点:可以保存缺点:无法及时得到报错反馈1.2.1三个步骤编写Py......
  • 数学建模入门笔记(1)——Python pulp库解线性规划问题
    参考:Python求解线性规划——PuLP使用教程-Only(AR)-博客园(cnblogs.com)1.Definethemodelmodel=pl.LpProblem(name="",sense=pl.LpMaximize)name模型的名字sense模型的类型(pl.LpMaximize/pl.LpMinimize)2.Definethedecisionvariables用x[i]存储变量,命名为xi......
  • python selenium元素定位
    1.ID元素定位基于元素属性中的id的值来进行定位,id是一个标签的唯一属性值可以通过id属性来唯一定位一个元素,是首选的元素定位方式,动态ID不做考虑。driver.find_element_by_id('id')driver.find_element(By.ID,'id')2.name元素定位基于元素属性中的name的值来进行定位,但name并不......
  • # yyds干货盘点 # 盘点一个Python发票识别报错问题的处理案例
    大家好,我是皮皮。一、前言前几天在Python免费交流群【PJW】问了一个Python发票识别报错的问题,下图是他的报错截图,但是他自己看不出来哪里有问题,百度方面其实一问应该也有答案的,可是他就是有些找不到,然后找群里的好心人求助。后来【果冻和布丁】有GPT,找他帮忙问了一圈。二、实现过程......
  • 排序-归并排序
    主要思想-分治1.确定分界点mid=(l+r)/2下标中间值2.递归排序leftright3.归并合二为一排序算法的稳定性:稳定是指原序列中两个数值相同的,在排序后位置不发生变化则称这个排序稳定(快排不稳定,归并稳定)......
  • python 安装Anaconda3详细步骤 Anaconda的【下载】——【安装】——【配置path环境变
    python安装Anaconda3详细步骤Anaconda的【下载】——【安装】——【配置path环境变量】——【检验】——【修改清华镜像】目录:1.下载2.安装3.配置4.检验5.镜像(修改Anaconda下载通道)前言:装anaconda,就不需要单独装python,anaconda中自带python1.下载(1)官网下载:Anaconda|I......
  • Python列表差异值统计:集合操作、列表推导式、对称差集详解
     在Python中,统计两个列表的差异值有多种方法,其中包括使用集合操作、列表推导式等。下面我将通过实例详细讲解几种常见的方法,并提供相应的实例源代码。方法一:使用集合操作list1=[1,2,3,4,5]list2=[3,4,5,6,7]#找到在list1中而不在list2中的元素difference1......
  • 盘点一个Python发票识别报错问题的处理案例
    大家好,我是皮皮。一、前言前几天在Python免费交流群【PJW】问了一个Python发票识别报错的问题,下图是他的报错截图,但是他自己看不出来哪里有问题,百度方面其实一问应该也有答案的,可是他就是有些找不到,然后找群里的好心人求助。后来【果冻和布丁】有GPT,找他帮忙问了一圈。二、实......
  • Python3 使用 PyMuPDF 库提取pdf中的字体文件
    先安装PyMuPDF库:pipinstallPyMuPDF 示例:importfitzdefextract_fonts(pdf_path):withfitz.open(pdf_path)asdoc:num_pages=doc.page_countfonts=[]forpage_numberinrange(num_pages):font_info=doc.get......
  • python 使用记录
     1.pythonpyqt6QPushButton设定快捷键importosimportsysfromPyQt6.QtWidgetsimportQPushButtonfromPyQt6.QtGuiimportQIconfromPyQt6.QtCoreimportQSize#......中间省略#初始化按钮self.btn=QPushButton('',self)self.btn.move(self.wid......