使用pymongo对MongoDB数据库进行增删改查

当使用Python和 pymongo连接MongoDB时,可以执行各种操作来增加、修改、删除和查询文档。以下是常用操作:

  1. 增加数据:

    • add_one(table, data): 插入单个文档到指定的集合中,并返回插入的文档的ID。
    • add_many(table, data_list): 插入多个文档到指定的集合中,并返回插入的文档的ID列表。
    def add_one(table, data):db = get_db("python")result = db[table].insert_one(data)return resultdef add_many(table, data_list):db = get_db("python")result = db[table].insert_many(data_list)return result.inserted_ids
  2. 更新数据:

    • upd(table, condition, data): 更新满足条件的多个文档,将其字段值更新为指定的数据。
    def upd(table, condition, data):db = get_db("python")result = db[table].update_many(condition, {"$set": data})return result
    
  3. 删除数据:

    • delete(table, condition): 删除满足条件的多个文档,并返回删除的文档数量。
    def delete(table, condition):db = get_db("python")result = db[table].delete_many(condition)return result
    
  4. 查询数据:

    • find_one(table, condition): 查询满足条件的第一个文档,并返回该文档。
    • find_all(table): 查询指定集合中的所有文档,并返回文档列表。
    def find_one(table, condition):db = get_db("python")result = db[table].find_one(condition)return result
    def find_all(table):db = get_db("python")result = db[table].find()return list(result)
    

    完整代码:

import pymongo
from pymongo import MongoClient# 创建返回链接对象
def get_db(database):client = MongoClient(host="localhost", port=27017)db = client[database]return db# 增删改查
# 增加数据
def add_one(table, data):db = get_db("python")result = db[table].insert_one(data)return resultdef add_many(table, data_list):db = get_db("python")result = db[table].insert_many(data_list)return result.inserted_idsdef upd(table, condition, data):db = get_db("python")result = db[table].update_many(condition, {"$set": data})return resultdef delete(table, condition):db = get_db("python")result = db[table].delete_many(condition)return resultdef find_one(table, condition):db = get_db("python")result = db[table].find_one(condition)return result
def find_all(table):db = get_db("python")result = db[table].find()return list(result)if __name__ == '__main__':data1 = {"name": "Alice", "age": 25, "city": "New York"}r.inserted_id = add_one("students", data1)print(r.inserted_id)# 插入多个文档data2 = [{"name": "Bob", "age": 30, "city": "London"},{"name": "Charlie", "age": 35, "city": "Paris"},]rr = add_many("students", data2)# 更新文档update_condition = {"name": "Alice"}update_data = {"age": 26}upd("students", update_condition, update_data)# 删除文档delete_condition = {"name": "Bob"}result = delete("students", delete_condition)print(result.deleted_count)# 查询文档condition = {"city": "New York"}result = find_one("students", condition)print(result)# 查询所有文档result = find_all("students")for doc in result:print(doc)

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

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

相关文章

JVM内存模型和结构详解(五大模型图解)

目录 方法区(Method Area): 堆(Heap): 栈(Stack): 本地方法栈(Native Method Stack): 程序计数器(Program Counter Register): Java Virtual Machine (J…

SpringCloudAlibaba之sentinel 流量卫兵(流控,熔断降级) ——详细讲解

目录 一、什么是sentinel 二、sentinel使用 1. sentinel dashboard的安装 2.启动 3.访问web界面 ​编辑 4.登录 三、sentinel 实时监控服务 1.创建项目引入依赖 2.配置 3.启动服务 4.访问dashboard界面查看服务监控 5.开发服务 6.启动进行调用 7.查看监控界面 四、senti…

肠道菌群16s检测粪便采样工具包 粪便采样套装

肠道菌群16s检测是一种常见的分子生物学技术,用于研究人体肠道中的微生物群落。该技术通过分析16s rRNA基因序列,可以快速、准确地鉴定并定量不同种类的肠道微生物。 肠道菌群16s检测通常通过采集粪便样本进行分析。在实验室中,通过提取微生物…

leetcode面试经典150题——33 最小覆盖子串(滑动窗口)

题目: 最小覆盖子串 描述: 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符,我们寻找的子字符串中…

Android NDK开发中常用的gradle配置

文章目录 externalNativeBuild1.配置通用的 CMake 构建选项2.指定 CMakeLists.txt 文件的位置和 CMake 版本 指定ndk版本 externalNativeBuild 下面的gradle代码包含两个externalNativeBuild {} android {defaultConfig {externalNativeBuild {cmake {cppFlags ""}…

【三维重建】摄像机标定(张正友相机标定法)

摄像机标定的目的是为了求解摄像机的内、外参数 求解投影矩阵M 通过建立特殊的场景,我们能过得到多对世界坐标和对应图像坐标 根据摄像机几何可知 : ,M是一个3*4的矩阵,令 通过一对点可以得到两个方程组,M中一共有11个…

SpringBoot : ch09 整合Redis

前言 当你的应用程序需要一个快速、可扩展的内存数据库时,Redis是一个非常流行的选择。通过将Redis与Spring Boot集成,你可以轻松地利用Redis的功能,例如缓存、会话存储和消息队列等,从而提升应用程序的性能和可伸缩性。 在本教…

1043 Is It a Binary Search Tree (二叉搜索树建树,性质)

题意:给定一个二叉树的前序遍历,判断是否为二叉搜索树 (碎碎念:一直拿不到满分,尝试了多种解法,最后挑了一个最常规的解法去一直debug才满分通过了,,这题花费了快4个小时了&#xf…

Java Elasticsearch 指标聚合

Elasticsearch指标聚合,就是类似SQL的统计函数,指标聚合可以单独使用,也可以跟桶聚合一起使用,下面介绍Java Elasticsearch指标聚合的写法。 实例: // 首先创建RestClient,后续章节通过RestClient对象进行…

时间序列预测学习笔记

目录 魔改测试代码: Basisformer论文介绍 魔改测试代码: import torch.nn as nn import torch.nn.utils.weight_norm as wn import matplotlib.pyplot as plt import torch import torch.nn.functional as F import time import math import numpy as npclass MLP_bottle(…

mongodb查询数据库集合的基础命令

基础命令 启动mongo服务 mongod -f /usr/local/mongodb/mongod.conf //注意配置文件路径停止mongo服务 关闭mongodb有三种方式: 一种是进入mongo后通过mongo的函数关闭; use admin db.shutdownServer()一种是通过mongod关闭; mongod --s…

Selenium 学习(0.14)——软件测试之测试用例设计方法——因果图法2【基本步骤及案例】

1、因果图法的基本步骤 2、案例分析 1)分析原因和结果 2)关联原因和结果 投入1元5角或2元,按下“可乐”,送出“可乐”【暂时忽略找零】 投入2元,按下“可乐”或“雪碧”。找零5角,送出“可乐”或“雪…

软件测试测试文档编写

在软件测试中的流程中,测试文档也是一个重要的流程,所以测试人员也需要学习测试文档的编写和阅读。 一、定义:   测试文档(Testing Documentation)记录和描述了整个测试流程,它是整个测试活动中非常重要…

vscode注释插件「koroFileHeader」

前言 在vscode上进行前端开发,有几个流行的注释插件: Better CommentsTodo TreekoroFileHeaderDocument ThisAuto Comment Blocks 在上面的插件中我选择 koroFileHeader 做推荐,原因一是使用人数比较多(最多的是 Better Commen…

NAS-DIP: Learning Deep Image Prior with Neural Architecture Search

NAS-DIP: 用神经结构搜索学习深度图像先验 论文链接:https://arxiv.org/abs/2008.11713 项目链接:https://github.com/YunChunChen/NAS-DIP-pytorch Abstract 最近的研究表明,深度卷积神经网络的结构可以用作解决各种逆图像恢复任务的结构…

《算法通关村——位运算在查找重复元素中的妙用》

《算法通关村——位运算在查找重复元素中的妙用》 在海量数据中,此时普通的数组、链表、Hash、树等等结构有无效了 ,因为内存空间放不下了。而常规的递归、排序,回溯、贪心和动态规划等思想也无效了,因为执行都会超时&#xff0c…

C#-关于日志的功能扩展

目录 一、日志Sink(接收器) 二、Trace追踪实现日志 三、日志滚动 一、日志Sink(接收器) 安装NuGet包:Serilog Sink有很多种,这里介绍两种: Console接收器(安装Serilog.Sinks.Console); File接收器(安装…

Python批量裁剪图像尺寸、压缩图像大小代码实现

from PIL import Image import os import iodef resize_images_in_directory(directory, target_size(240, 240), max_file_size_kb500): #保证处理后的图像集 大小为240*240 且不超过 500Kfor filename in os.listdir(directory):if filename.lower().endswith((.png, .jpg, .…

「go module」一文总结 go mod 入门使用

文章目录 什么是 Go Modules为什么要使用 Modules怎么使用前置条件项目初始化如何安装/管理依赖?依赖安装 go get版本选择方式 替换版本 replace间接依赖 && go mod tidy远程代理 总结 什么是 Go Modules Module 是 Go 的依赖管理工具。 核心概念 Module…

云原生系列Go语言篇-泛型Part 1

“Don’t Repeat Yourself”是常见的软件工程建议。与其重新创建一个数据结构或函数,不如重用它,因为对重复的代码保持更改同步非常困难。在像 Go 这样的强类型语言中,每个函数参数及每个结构体字段的类型必须在编译时确定。这种严格性使编译…