【fastapi+mongodb】使用motor操作mongodb(三)

本篇文章介绍mongodb的删和改,下面是前两篇文章的链接:
【fastapi+mongodb】使用motor操作mongodb
【fastapi+mongodb】使用motor操作mongodb(二)

delete

delete 的用法基本和查找一致,包括delete_one(删除一个),delete_many(匹配到的全部删除),我们以delete_one为例:

async def delete_user_by_name(name: str):delete_result = await collection_users.delete_one({'name':name})print(delete_result)
loop.run_until_complete(delete_user_by_name('bluebonnet27'))

打印出来的result如下:

DeleteResult({'n': 1, 'ok': 1.0}, acknowledged=True

其实这个result看源代码就知道它的结构了:

class DeleteResult(_WriteResult):"""The return type for :meth:`~pymongo.collection.Collection.delete_one`and :meth:`~pymongo.collection.Collection.delete_many`"""__slots__ = ("__raw_result",)def __init__(self, raw_result: Mapping[str, Any], acknowledged: bool) -> None:self.__raw_result = raw_resultsuper().__init__(acknowledged)def __repr__(self) -> str:return f"{self.__class__.__name__}({self.__raw_result!r}, acknowledged={self.acknowledged})"@propertydef raw_result(self) -> Mapping[str, Any]:"""The raw result document returned by the server."""return self.__raw_result@propertydef deleted_count(self) -> int:"""The number of documents deleted."""self._raise_if_unacknowledged("deleted_count")return self.__raw_result.get("n", 0)

因此我们可以调用deleted_count方法返回被删除的数据个数,以及是否删除成功(delete方法本身是不会报异常的,没有满足要求的数据就什么都不执行)

update

更新主要是两类函数:replace和update,前者会用传入的对象整个覆盖掉document(就算你传入的是个空的document),后者可以选择修改哪些字段。

我们先以replace_one为例子:

async def replace_user():document_user = await collection_users.find_one({'name':'bluebonnet28'})_id = document_user['_id']replace_result = await collection_users.replace_one({'_id': _id}, {'age': 30})print(replace_result.matched_count)print(replace_result.modified_count)

整个文档都会被替换,除了id,因此名字也没了,新的文档如下:
新的文档
试试温和一点的update_one

async def update_name_of_user_by_age(age: int, name: str):update_result = await collection_users.update_one({'age': age}, {'$set': {'name': name}})print(update_result.matched_count)print(update_result.modified_count)
loop.run_until_complete(update_name_of_user_by_age(30, 'name'))

我们将刚才的数据重新修改了下,现在它是这样的:
再次更新后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/858374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

借助AI快速提高英语听力:如何获得适合自己的听力材料?

英语听力是英语学习中的一个重要组成部分,它对于提高语言理解和交流能力至关重要。可理解性学习(comprehensible input)是语言习得理论中的一个概念,由语言学家Stephen Krashen提出,指的是学习者在理解语言输入的同时&…

如何使用STL中的模板类

在C中,标准模板库(STL)提供了大量的模板类,这些类可以处理各种类型的数据,从而极大地提高了代码的复用性和灵活性。要使用STL中的模板类,你需要遵循一些基本的步骤和约定。 以下是一些使用STL模板类的基本…

时空预测 | 基于深度学习的碳排放时空预测模型

时空预测 模型描述 数据收集和准备:收集与碳排放相关的数据,包括历史碳排放数据、气象数据、人口密度数据等。确保数据的质量和完整性,并进行必要的数据清洗和预处理。 特征工程:根据问题的需求和领域知识,对数据进行…

Canvas绘制图片和区域

如何使用Canvas在图片上绘制区域? 一. 首先,我们需要初始化三个canvas画布(初始化Canvas) initCanvas() {// 初始化canvas画布let canvasWrap document.getElementsByClassName("canvas-wrap");this.wrapWidth canva…

Android中RSA公钥加密后Java服务端私钥无法解密问题解决

工作中经常需要Android客户端使用RSA公钥加密敏感数据,服务端再使用配套的RSA私钥解密数据,最近碰到一个问题,使用RSA加密后服务端无法解密,查阅相关资料后,发现是这个问题: RSA操作的填充方式不对。 and…

Android中如何动态的调整Dialog的背景深暗

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在 Android 开发中,当你使用 Dialog 或 DialogFragment 时,可以通过设置 Window 的背景变暗来突出它的可见性。这个效果…

【密码学】分组密码

文章目录 分组密码的模式分组密码与流密码模式明文分组与密文分组 ECB模式ECB定义ECB特点对ECB模式的攻击改变分组顺序攻击 CBC模式CBC定义初始化向量IVCBC特点对CBC模式的攻击对初始向量进行反转攻击填充提示攻击 CFB模式CFB定义对CFB模式的攻击重放攻击 OFB模式OFB定义CFB模式…

05-5.5.3 并查集的进一步优化

👋 Hi, I’m Beast Cheng 👀 I’m interested in photography, hiking, landscape… 🌱 I’m currently learning python, javascript, kotlin… 📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

游戏心理学Day23

游戏中的道德与文化 游戏与道德 道德在汉语中最早可追溯到老子的道德经,老子说道生之,德畜之,物行之,势成之,是以万物莫不遵循而贵德。道之贵,德之贵,夫莫之命,而常于自然。其中&a…

全面分析一下前端框架Angular的来龙去脉,分析angular的技术要点和难点,以及详细的语法和使用规则,底层原理-小白进阶之路

Angular 前端框架全面分析 Angular 是一个由 Google 维护的开源前端框架。它最早在 2010 年发布,最初版本称为 AngularJS。2016 年,团队发布了一个完全重写的版本,称为 Angular 2,之后的版本(如 Angular 4、Angular 5…

什么是CSS原子化?

CSS原子化,也被称为功能性CSS或工具类CSS,是一种构建样式表的方法,它将传统CSS中的“多属性-多值”类转变为“单属性-单值”的类。这种方法最主要的特点是提高了样式的可复用性和模块化程度。 CSS原子化的详细说明: 结构和命名 …

【LocalAI】(13):LocalAI最新版本支持Stable diffusion 3,20亿参数图像更加细腻了,可以继续研究下

最新版本v2.17.1 https://github.com/mudler/LocalAI/releases Stable diffusion 3 You can use Stable diffusion 3 by installing the model in the gallery (stable-diffusion-3-medium) or by placing this YAML file in the model folder: Stable Diffusion 3 Medium 正…

PriorityQueue详解(含动画演示)

目录 PriorityQueue详解1、PriorityQueue简介2、PriorityQueue继承体系3、PriorityQueue数据结构PriorityQueue类属性注释完全二叉树、大顶堆、小顶堆的概念☆PriorityQueue是如何利用数组存储小顶堆的?☆利用数组存储完全二叉树的好处? 4、PriorityQueu…

python json反序列化为对象

在Python中,将JSON数据反序列化为对象通常意味着将JSON格式的字符串转换为一个Python的数据结构(如列表、字典)或者一个自定义的类实例。虽然Python的标准库json模块不提供直接将JSON数据映射到类的实例的功能,但我们可以通过一些…

React AntDesign Layout组件布局刷新页面错乱闪动

大家最近在使用React AntDesign Layout组件布局后刷新页面时,页面布局错乱闪动 经过组件属性的研究才发现,设置 hasSider 为 true 就能解决上面的问题,耽搁了半天的时间,接着踩坑接着加油!!! …

pytorch实现的面部表情识别

一、绪论 1.1 研究背景 面部表情识别 (Facial Expression Recognition ) 在日常工作和生活中,人们情感的表达方式主要有:语言、声音、肢体行为(如手势)、以及面部表情等。在这些行为方式中,面部表情所携带的表达人类…

QT/QMessageBox/QTimerEvent/使用定时器制作一个闹钟

1.使用定时器制作一个闹钟 代码: widget.cpp: #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), speecher(new QTextToSpeech(this))//给语音对象申请空间 {ui->setup…

SQL找出所有员工当前薪水salary情况

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 有一个薪水表…

Debian Linux安装minikubekubectl

minikube&kubectl minkube用于在本地开发环境中快速搭建一个单节点的Kubernetes集群,还有k3s,k3d,kind都是轻量级的k8skubectl是使用K8s API 与K8s集群的控制面进行通信的命令行工具 这里使用Debian Linux演示,其他系统安装见官网,首先…

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全RBCD资源Operators组成员HTLMRelay结合

基于资源的约束委派(RBCD)是在Windows Server 2012中新加入的功能,与传统的约束委派相比,它不再需要域管理员权限去设置相关属性。RBCD把设置委派的权限赋予了机器自身,既机器自己可以决定谁可以被委派来控制我。也就是说机器自身可以直接在自己账户上配置msDS-AllowedToAct…