143.《python中使用pymongo》
文章目录
- pymongo安装
- pymongo连接数据库
- mongodb操作
- 创建数据库
- 判断数据库是否存在
- 创建集合
- 判断集合是否已经存在
- 插入集合
- 插入一条
- 多条插入
- 查询数据
- 查询一条数据
- 查询所有数据
- 查询指定字段的数据
- 统计查询
- 统计所有记录数
- 按条件统计记录数
- 分页列表查询
- 比较查询
- $eq
- $gt
- $gte
- $in
- $lt
- $lte
- $ne
- $nin
- 正则表达式查询
- 返回指定条数记录limit()
- 指定从哪条数据开始skip()
- 排序sort()
- 复合排序
- 更新数据
- 修改一条数据
- 修改多条数据
- 列值增长的修改
- 删除文档
- 删除全部
- 条件删除
- 常用命令小结
mongodb 的安装教程,请移步 mac m1/2安装mongodb
pymongo安装
pip install pymongo
pymongo连接数据库
dababaseName为数据库名称
docment为文档名称
from pymongo import MongoClientclient = MongoClient('127.0.0.1', 27017) # 如果是本地连接host,port参数可以省略db = client['dababaseName']['docment']
需要权限认证的方式链接mongodb
from pymongo import MongoClient# 创建数据库连接对象
client = MongoClient('127.0.0.1', 27017)# 选择一个数据库
db = client['admin']
# 数据库中开了权限认证后,需要下一行代码
# 输入超级管理员账号和密码
db.authenticate('username', 'password')
# 选择一个集合,没有的话会新建的
col = client['dababaseName']['docment']
mongodb操作
创建数据库
from pymongo import MongoClientclient = MongoClient('127.0.0.1', 27017) # 如果是本地连接host,port参数可以省略db = client['test-mongo']
判断数据库是否存在
from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
db_list = my_client.list_database_names()
if "test-mongo" in db_list:print('数据库已经存在!')
创建集合
from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
document = my_client['test-mongo']
print(document)my_col = document['test_col']
print(my_col)
判断集合是否已经存在
from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
document = my_client['test-mongo']col_list = document.list_collection_names()
print(col_list)
if 'test_col' in col_list:print("集合已经存在!")
插入集合
插入一条
from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
# 插入
document.insert_one({"name": '章三'})
print(document.find())
多条插入
from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
# 插入多条
data = [{ "name":'张三', "age": 18 },{ "name":'李四', "age": 20 }
]
result = database.insert_many(data)
print(list(document.find()))
查询数据
查询一条数据
from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']result = document.find_one()
print(result)
查询所有数据
from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']result = document.find()
print(result)
查询指定字段的数据
from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']result = document.find({ "name": '章三' })
print(result)
或
from pymongo import MongoClientmy_client = MongoClient('mongodb://root:88888888@192.168.124.49:27017')
my_db = my_client['test-mongo']
# print(my_db)document = my_db['test-document']
# print(my_col)datas = document.find({}, {'name': 0})
for data in datas:print(data)
统计查询
统计所有记录数
from pymongo import MongoClientmy_client = MongoClient('mongodb://root:88888888@192.168.124.49:27017')
my_db = my_client['test-mongo']
# print(my_db)document = my_db['test-document']
result = document.count()
按条件统计记录数
from pymongo import MongoClientmy_client = MongoClient('mongodb://root:88888888@192.168.124.49:27017')
my_db = my_client['test-mongo']
# print(my_db)my_col = my_db['test-document']
result = document.count({userid: 1})
提示:默认情况下count() 方法返回符合条件的全部记录条数。
分页列表查询
比较查询

from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
$eq
result = document.find({"age": {"$in": 18}},{"age": 1, "_id": 0})
$gt
result = document.find({"age": {"$gt": 18}},{"age": 1, "_id": 0})
$gte
result = document.find({"age": {"$gte": 18}},{"age": 1, "_id": 0})
$in
result = document.find({"age": {"$gte": [18,20]}},{"age": 1, "_id": 0})
$lt
result = document.find({"age": {"$lt": 20}},{"age": 1, "_id": 0})
$lte
result = document.find({"age": {"$lte": 20}},{"age": 1, "_id": 0})
$ne
result = document.find({"age": {"$ne": 20}},{"age": 1, "_id": 0})
$nin
result = document.find({"age": {"$nin": [18, 20]}},{"age": 1, "_id": 0})
正则表达式查询
from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
result = document.find({"name": {"$regex": ".*?"})
返回指定条数记录limit()
from pymongo import MongoClientmy_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
result = document.find().limit(3)
指定从哪条数据开始skip()
my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
result = document.find().limit(3).skip(3)
排序sort()
1表示升序排序,-1表示降序排序
my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
# 排序
result = document.find().limit(3).skip(3).sort('age', -1)
复合排序
先按age字段进行升序排序,然后按name字段进行降序排序
这种排序方式会优先按第一个字段排序,如果第一个字段的值相同,再按第二个字段排序,以此类推
my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
# 排序
result = document.find().limit(3).skip(3).sort({'age', -1, "name": 1})
更新数据
修改一条数据
my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document'] result = document.update_one({{"name": "张三" },"$set": {"age": 31}})
修改多条数据
my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document'] result = document.update_one({{"name": "张三" },{"$set": {"age": 31}}, {"multi": true }})
列值增长的修改
my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document'] result = document.update_one({{_id:"3"},{$inc:{likenum:NumberInt(1)}})
删除文档
my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
删除全部
document.remove({})
或
document.remove()
条件删除
document.remove({_id:"1"})
常用命令小结
my_client = MongoClient('127.0.0.1', 27017)
my_db = my_client['test-mongo']
document = my_db['test-document']
选择切换数据库:use articledb
插入数据:document.insert({bson数据})
查询所有数据:document.find();
条件查询数据:document.find({条件})
查询符合条件的第一条记录:document.findOne({条件})
查询符合条件的前几条记录:document.find({条件}).limit(条数)
查询符合条件的跳过的记录:document.find({条件}).skip(条数)
修改数据:document.update({条件},{修改后的数据}) 或document.update({条件},{$set:{要修改部分的字段:数据})
修改数据并自增某字段值:document.update({条件},{$inc:{自增的字段:步进值}})
删除数据:document.remove({条件})
统计查询:document.count({条件})
模糊查询:document.find({字段名:/正则表达式/})
条件比较运算:document.find({字段名:{$gt:值}})
包含查询:document.find({字段名:{$in:[值1,值2]}})或document.find({字段名:{$nin:[值1,值2]}})
条件连接查询:document.find({$and:[{条件1},{条件2}]})或document.find({$or:[{条件1},{条件2}]})
————————————————
上班真的好开心,需求bug来不停。
产品测试来回找,后端交互想上刑。
会议不停满楼跑,文档笔记要分清。
摸鱼睡觉一时爽,提测发布胆惊心。
大佬思绪跟得上,想法创意实践灵。
日常积累很重要,自我提高才算行。
暮然回首学生时,半载已过还未明。
处处少年何模样?如今胡须满颔停!
————————————————
相关文章:
143.《python中使用pymongo》
文章目录 pymongo安装pymongo连接数据库mongodb操作创建数据库判断数据库是否存在创建集合判断集合是否已经存在插入集合插入一条多条插入 查询数据查询一条数据查询所有数据查询指定字段的数据统计查询统计所有记录数按条件统计记录数分页列表查询比较查询$eq$gt$gte$in$lt$lt…...
Babylon.js 的 Mesh 与 Unity 的 GameObject:深入对比与分析
在 3D 开发领域,Babylon.js 和 Unity 是两款极具影响力的引擎,分别在 Web 平台和游戏开发领域占据重要地位。要深入理解这两款引擎的异同,从其核心对象——Babylon.js 的 Mesh 和 Unity 的 GameObject ——入手进行对比,是…...
MySQL安装,配置教程
一、Linux在线yum仓库安装 打开MySQL官方首页,链接为:https://www.mysql.com/ 界面如下: 在该页面中找到【DOWNOADS】选项卡,点击进入下载页面。 在下载界面中,可以看到不同版本的下载链接,这里选择【My…...
Android折叠屏适配(权宜之计)
现在折叠屏手机出了也有一段时间了,但是除了大厂app,其他app适配折叠屏还是比较少,如果真的想做好折叠屏完全适配,那这个文章可能并不适合,这里只是一个简单适配的思路。 如果原先你的app已经适配了平板,那…...
Spark是什么?Flink和Spark区别
Spark是什么?Flink和Spark区别 一、Spark二、Spark和Flink区别三、总结 一、Spark Apache Spark 是一个开源的大数据处理框架,主要用于大规模数据处理和分析。它支持多种数据处理模式,包括批处理、流处理、SQL 查询、机器学习和图处理等。 核…...
Cocos Creator 3.8 修改纹理像素值
修改的代码: import { _decorator, Component, RenderTexture, Sprite, Texture2D, ImageAsset, SpriteFrame, Vec2, gfx, director, log, math, v2 } from cc;const { ccclass, property } _decorator;ccclass(GradientTransparency) export class GradientTrans…...
如何评价deepseek-V3 VS OpenAI o1 自然语言处理成Sql的能力
DeepSeek-V3 介绍 在目前大模型主流榜单中,DeepSeek-V3 在开源模型中位列榜首,与世界上最先进的闭源模型不分伯仲。 准备工作: 笔者只演示实例o1 VS DeepSeek-V3两个模型,大家可以自行验证结果或者实验更多场景,同时…...
SQL左连接的两种不同情况示例和外连接示例
Oracle;有2个表如下; 执行下图选中的左连接; 左表10条记录,右表3条记录,结果是10条记录; 执行下图的左连接, 老师表为左表,学生表为右表,结果会显示每个老师,…...
【渗透测试术语总结】
Top 渗透测试常用专业术语 相信大家和我一样,搞不清这些专业名词的区别,所以我来整理一下。 1. POC、EXP、Payload与Shellcode POC:全称 Proof of Concept ,中文 概念验证 ,常指一段漏洞证明的代码。 EXP…...
Unity2D初级背包设计后篇 拓展举例与不足分析
Unity2D初级背包设计中篇 MVC分层撰写(万字详解)-CSDN博客、 如果你已经搞懂了中篇,那么对这个背包的拓展将极为简单,我就在这里举个例子吧 目录 1.添加物品描述信息 2.拓展思路与不足分析 1.没有删除只有丢弃功能,所以可以添加垃圾桶 2.格…...
Kafka优势剖析-幂等性和事务
目录 1. 幂等性(Idempotence) 1.1 什么是幂等性? 1.2 幂等性的实现 1.2.1 生产者 ID 和序列号 1.2.2 重复消息检测 1.2.3 幂等性的优势 1.3 幂等性的配置 2. 事务支持(Transactions) 2.1 什么是事务支持&…...
MyBatis深入了解
目录 xml 映射文件中,除了常见的select、insert、update、delete 标签之外,还有哪些标签? Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗? MyBatis 是如何进行分页的?分页插件的原理是什么? 简述 …...
语音技术与人工智能:智能语音交互的多场景应用探索
引言 近年来,智能语音技术取得了飞速发展,逐渐渗透到日常生活和各行各业中。从语音助手到智能家居控制,再到企业客服和教育辅导,语音交互正以前所未有的速度改变着人机沟通的方式。这一变革背后,人工智能技术无疑是关键…...
Openwrt @ rk3568平台 固件编译实践(二)- ledeWRT版本
目录 ledeWRT介绍固件编译下载代码修改feed源更新并安装编译第三方软件包制作用于eMMC烧写的rootfs基于lede发行版验证烧写rk3568.img, LEDE wrt启动成功refhttps://blog.csdn.net/zc21463071/article/details/106751361介绍rk3568平台下, lede 大神版 openwrt固件的下载、编译…...
Windows下调试Dify相关组件(1)--前端Web
1. 什么是Dify? 官方介绍:Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。 这是个组件式框架,即使是非技…...
对话|企业如何构建更完善的容器供应链安全防护体系
对话|企业如何构建更完善的容器供应链安全防护体系 云布道师 随着云计算和 DevOps 的兴起,容器技术和自动化成为软件开发中的必要手段,软件供应链也进入了自动化及 CI/CD 阶段。然而,容器技术和自动化虽然提升了软件的更新速度&…...
HTML5 缩放动画(Zoom In/Out)详解
HTML5 缩放动画(Zoom In/Out)详解 缩放动画是一种常见的视觉效果,用于使网页元素逐渐放大或缩小,从而吸引用户的注意力。下面将介绍如何使用 CSS 和 JavaScript 实现这种动画效果。 1. 使用 CSS 实现缩放动画 可以通过 CSS 的 …...
C语言——文件IO 【文件IO和标准IO区别,操作文件IO】open,write,read,dup2,access,stat
1.思维导图 2.练习 1:使用C语言编写一个简易的界面,界面如下 1:标准输出流 2:标准错误流 3:文件流 要求:按1的时候,通过printf输出数据,按2的时候,通过p…...
【C++习题】22.随机链表的复制
文章目录 题目:138. 随机链表的复制 - 力扣(LeetCode)代码: 题目:138. 随机链表的复制 - 力扣(LeetCode) 链接🔗:138. 随机链表的复制 - 力扣(LeetCode&…...
备考蓝桥杯:数据结构概念浅谈
目录 1数据结构的概念 什么是数据结构: 为什么要有数据结构 2.数据结构的三个组成要素 1.逻辑结构 2.存储结构 3.数据运算 3。算法好坏的度量(时间复杂度和空间复杂度) 时间复杂度计算 最优和平均和最差时间复杂度 计算时间复杂度例子 空间复…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
