当前位置: 首页 > news >正文

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条记录; 执行下图的左连接, 老师表为左表,学生表为右表,结果会显示每个老师&#xff0c…...

【渗透测试术语总结】

Top 渗透测试常用专业术语 相信大家和我一样,搞不清这些专业名词的区别,所以我来整理一下。 1. POC、EXP、Payload与Shellcode POC:全称 Proof of Concept ,中文 概念验证 ,常指一段漏洞证明的代码。 EXP&#xf…...

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。算法好坏的度量(时间复杂度和空间复杂度) 时间复杂度计算 最优和平均和最差时间复杂度 计算时间复杂度例子 空间复…...

剧本杀创作指南2025,解析,从零开始打造沉浸式推理体验

剧本杀创作指南2025,解析,从零开始打造沉浸式推理体验剧本杀作为一种新兴的娱乐方式,近年来在国内迅速崛起。随着市场需求的不断增长,越来越多的创作者开始尝试编写剧本杀剧本。本文将为你提供一份详尽的剧本杀创作指南&#xff0…...

Decision Transformer与行为克隆对比分析:何时选择哪种方法

Decision Transformer与行为克隆对比分析:何时选择哪种方法 【免费下载链接】decision-transformer Official codebase for Decision Transformer: Reinforcement Learning via Sequence Modeling. 项目地址: https://gitcode.com/gh_mirrors/de/decision-transfo…...

ZYNQ AXI_DMA配置避坑指南:如何避免DDR3数据传输中的栈区溢出

ZYNQ AXI_DMA配置避坑指南:如何避免DDR3数据传输中的栈区溢出 在嵌入式系统开发中,内存管理往往是决定项目成败的关键因素之一。最近接手一个ZYNQ项目时,我遇到了一个令人头疼的问题:当使用AXI_DMA从PL端向PS端的DDR3内存传输大量…...

光刻胶选型避坑指南:从正胶负胶到配套试剂的全流程解析

光刻胶选型避坑指南:从正胶负胶到配套试剂的全流程解析 在半导体制造领域,光刻工艺的质量直接决定了芯片的性能和良率。而光刻胶作为光刻工艺的核心材料,其选型往往成为工艺工程师最头疼的问题之一。我曾亲眼见过一个团队因为选错光刻胶类型&…...

【2026 CVPR】Asking like Socrates: Socrates helps VLMs understand remote sensing images

RS-EoT (Remote Sensing Evidence-of-Thought) 研究旨在解决视觉语言模型(VLM)在处理遥感图像时的“虚假推理”问题 。 文章目录 核心问题 核心思想 核心方法 A. 数据合成:SocraticAgent Data Statistics B. 训练策略:两阶段渐进式强化学习 (RL) C. 训练策略 实验验证 主要…...

2026届学术党必备的五大AI科研助手横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 为学术写作供给高效解决办法的是论文一键生成技术,此工具依据自然语言处理跟深度…...

2026届毕业生推荐的AI学术工具实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于毕业论文写作进程里,人工智能工具可充作辅助方式用以提高效率。学生能借AI开展…...

从选题到发布全托管:我用OpenClaw搭建了个人自媒体AI流水线

一、引言:内容创作者的普遍痛点 作为技术博主,相信很多人都遇到过这些问题: 选题焦虑:每天花1-2小时刷各大平台找热点,不知道写什么内容读者喜欢效率低下:写一篇技术文章需要查资料、写内容、排版、配图、同…...

OpenClaw v2026.4.2 深度解读:插件边界继续外移,Task Flow 真正走向可持久化运维

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...

AI Agent Harness Engineering 零售场景应用:智能货架、库存管理与个性化推荐

AI Agent Harness Engineering 零售场景全栈应用:从智能货架机器人到千人千面实时导购 关键词 AI Agent Harness(智能体协同框架)、零售数字化、多模态智能体、强化学习库存调度、个性化推荐图谱、边缘云协同推理、供应链韧性优化 摘要 当传统“人-货-场”零售三要素被AI重…...