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

Python MongoDB 基本操作

本文内容主要为使用Python 对Mongodb数据库的一些基本操作整理。

目录

安装类库

操作实例

引用类库

连接服务器

连接数据库

添加文档

添加单条

批量添加

查询文档

查询所有文档

查询部分文档

使用id查询

统计查询

排序

分页查询

更新文档

update_one方法

update_many方法

删除文档

delete_one方法

delete_many方法

总结


安装类库

打开命令行执行以下命令:

pip install pymongo

安装过程如下:

操作实例

引用类库

首先需要引入mongodb的操作类库,示例如下:

from pymongo import MongoClient

连接服务器

conn = MongoClient('localhost', 27017)

连接数据库

db = conn.mydb

添加文档

添加单条

使用insert_one()方法,添加一个学生记录。

示例如下:

from pymongo import MongoClientconn = MongoClient('localhost', 27017)db = conn.mydb
student = db.student
student.insert_one({'name': 'zhangsan', 'age': 20, 'gender': 1, 'address': '北京海淀区', 'isDel': 0})# 关闭
conn.close()

批量添加

使用insert_many()方法,添加多个学生记录。

示例如下:

from pymongo import MongoClientconn = MongoClient('localhost', 27017)db = conn.mydb
collection = db.student
# 批量
collection.insert_many([{'name': '李四', 'age': 18, 'gender': 0, 'address': '北京海淀区', 'isDel': 0},{'name': '王五', 'age': 21, 'gender': 1, 'address': '北京昌平区', 'isDel': 0},{'name': '赵六', 'age': 19, 'gender': 0, 'address': '北京朝阳区', 'isDel': 0}
])# 关闭
conn.close()

查询文档

使用查询方法,查询刚才插入的数据。根据查询条件不同分为以下类型。

查询所有文档

没有查询条件即查询集合中所有记录。

示例如下:

from pymongo import MongoClientconn = MongoClient('localhost', 27017)collection = conn.mydb.studentres = collection.find()
for row in res:print(row)print(type(row))conn.close()

执行结果:

 

查询部分文档

通过设置查询条件为小于20岁的学生,来查询符合条件的部分数据。

示例如下:

res = collection.find({'age': {'$gt': 20}})
for row in res:print(row)print(type(row))

执行结果:

 

使用id查询

使用id查询与mysql不同,需要使用id生成器来转化id字符串后在进行查询。

示例如下:

from bson.objectid import ObjectId
info = collection.find({'_id':ObjectId('666bbb5b8d4817f169319d61')})
print(info)
print(type(info))
print(info[0])

打印为对象类型,可获取其第一个元素。

执行结果:

 

统计查询

对符合查询条件的记录进行数量统计。

示例如下:

res = collection.count_documents({'age': {'$gte': 20}})
print(res)

执行结果:

3

排序

默认升序 pymongo.DESCENDING倒序。

示例如下:

import pymongo
from pymongo import MongoClientconn = MongoClient('localhost', 27017)collection = conn.mydb.student# 默认升序 pymongo.DESCENDING倒序
res = collection.find().sort('age', pymongo.DESCENDING)
for row in res:print(row)

分页查询

通过skip()和limit()方法实现分页。

示例如下:

from pymongo import MongoClientconn = MongoClient('localhost', 27017)collection = conn.mydb.studentres = collection.find().skip(2).limit(5)
for row in res:print(row)

更新文档

update_one方法

只会修改符合条件的第一条记录。

示例如下:

info = collection.update_one({'name': 'zhangsan'}, {'$set': {'name': '李雷'}})
print(info)

执行结果:

# 修改成功
# UpdateResult({'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}, acknowledged=True)
# 没有找到符合记录,未修改
# UpdateResult({'n': 0, 'nModified': 0, 'ok': 1.0, 'updatedExisting': False}, acknowledged=True)

update_many方法

会修改所有符合条件的记录。

示例如下:

info = collection.update_many({'name': '李四'}, {'$set': {'name': '李武'}})
print(info)

执行结果:

UpdateResult({'n': 2, 'nModified': 2, 'ok': 1.0, 'updatedExisting': True}, acknowledged=True)

删除文档

删除文档也有两个方法。

delete_one方法

删除符合条件的第一条记录。

示例如下:

info = collection.delete_one({'name': '李雷'})
print(info)

delete_many方法

删除符合条件的所有记录。

示例如下:

info = collection.delete_many({'age': {'$gte': 20}})
print(info)

执行结果:

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

总结

本文内容主要为使用Python 对Mongodb数据库的一些基本操作整理。

相关文章:

Python MongoDB 基本操作

本文内容主要为使用Python 对Mongodb数据库的一些基本操作整理。 目录 安装类库 操作实例 引用类库 连接服务器 连接数据库 添加文档 添加单条 批量添加 查询文档 查询所有文档 查询部分文档 使用id查询 统计查询 排序 分页查询 更新文档 update_one方法 upd…...

Node.js 入门:

Node.js 是一个开源、跨平台的 JavaScript 运行时环境,它允许开发者在浏览器之外编写命令行工具和服务器端脚本。以下是一些关于 Node.js 的基础教程: 1. **Node.js 入门**: - 了解 Node.js 的基本概念,包括它是一个基于 Chro…...

java8 List的Stream流操作 (实用篇 三)

目录 java8 List的Stream流操作 (实用篇 三) 初始数据 1、Stream过滤: 过滤-常用方法 1.1 筛选单元素--年龄等于18 1.2 筛选单元素--年龄大于18 1.3 筛选范围--年龄大于18 and 年龄小于40 1.4 多条件筛选--年龄大于18 or 年龄小于40 and sex男 1.5 多条件筛…...

机器学习python实践——数据“相关性“的一些补充性个人思考

在上一篇“数据白化”的文章中,说到了数据“相关性”的概念,但是在统计学中,不仅存在“相关性”还存在“独立性”等等,所以,本文主要对数据“相关性”进行一些补充。当然,如果这篇文章还能入得了各位“看官…...

MySQL——触发器(trigger)基本结构

1、修改分隔符符号 delimiter $$ $$可以修改 2、创建触发器函数名称 create trigger 函数名 3、什么样在操作触发,操作哪个表 after :……之后触发 before :……之后触发 insert :……之后触发 update :……之后触…...

数字孪生定义及应用介绍

数字孪生定义及应用介绍 1 数字孪生(Digital Twin, DT)概述1.1 定义1.2 功能1.3 使用场景1.4 数字孪生三步走1.4.1 数字模型1.4.2 数字影子1.4.3 数字孪生 数字孪生地球平台Earth-2 参考 1 数字孪生(Digital Twin, DT)概述 数字孪…...

数据赋能(122)——体系:数据清洗——技术方法、主要工具

技术方法 数据清洗标准模型是将数据输入到数据清洗处理器,通过一系列步骤“清理”数据,然后以期望的格式输出清理过的数据。数据清洗从数据的准确性、完整性、一致性、惟一性、适时性、有效性几个方面来处理数据的丢失值、越界值、不一致代码、重复数据…...

【SCAU数据挖掘】数据挖掘期末总复习题库简答题及解析——中

1. 某学校对入学的新生进行性格问卷调查(没有心理学家的参与),根据学生对问题的回答,把学生的性格分成了8个类别。请说明该数据挖掘任务是属于分类任务还是聚类任务?为什么?并利用该例说明聚类分析和分类分析的异同点。 解答: (a)该数据…...

2024年注册安全工程师报名常见问题汇总!

​ 注册安全工程师报名 24年注册安全工程师报名已正式拉开序幕,报名时间为6月18日—7月10日,考试时间为10月26日—10月27日。 目前经有12个地区公布了2024年注册安全工程师报名时间: 注册安全工程师报名信息完善 根据注安报名系统提示&am…...

JRebel-JVMTI [FATAL] Couldn‘t write to C:\Users\中文用户名-完美解决

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 热部署下载参考博客解决第一步第二步第三步:第四步: 热部署下载 下载后启动报错:JRebel-JVMTI [FATAL] Couldn’t write to C:\…...

STM32基于DMA数据转运和AD多通道

文章目录 1. DMA数据转运 1.1 初始化DMA步骤 1.2 DMA的库函数 1.3 设置当前数据寄存器 1.4 DMA获取当前数据寄存器 2. DMA数据转运 2.1 DMA.C 2.2 DMA.H 2.3 MAIN.C 3. DMAAD多通道 3.1 AD.C 3.2 AD.H 3.3 MAIN.C 1. DMA数据转运 对于DMA的详细解析可以看下面这篇…...

安卓应用开发——Android Studio中通过id进行约束布局

在Android开发中,布局通常使用XML文件来描述,而约束(如相对位置、大小等)可以通过多种方式实现,但直接使用ID进行约束并不直接对应于Android的传统布局系统(如LinearLayout、RelativeLayout等)。…...

Elasticsearch过滤器(filter):原理及使用

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...

Docker配置与使用详解

一、引言 随着云计算和微服务的兴起,Docker作为一种轻量级的容器化技术,越来越受到开发者和运维人员的青睐。Docker通过容器化的方式,将应用程序及其依赖项打包成一个可移植的镜像,从而实现了应用程序的快速部署和扩展。本文将详…...

触控MCU芯片(1):英飞凌PSoC第6代第7代

前言: 说到触摸MCU芯片,这个历史也是很久了,比如日常经常接触到的洗衣机、电冰箱、小家电,隔着一层玻璃,轻轻一按就能识别按键,感觉比过去纯机械式的按键更高级更美观,不仅白电,现在很多汽车也都在进行触摸按键的改版,不再使用笨重的机械按键,比如空调调温按键、档位…...

git pull报错:unable to pull from remote repository due to conflicting tag(s)

背景 我在vscode里正常拉取代码,突然就报了如题所示的错误。 原因 因为vscode的拉取按钮执行的实际命令是:git pull --tags origin branch-name,该命令的实际含义是从远程仓库拉取指定的分支和该远程仓库上的所有标签。 在拉取标签时本地的…...

Python将字符串用特定字符分割并前面加序号

Python将字符串用特定字符分割并前面加序号 Python将字符串用特定字符分割并前面加序号,今天项目中就遇到,看着不难,得花点时间搞出来急用啊,在网上找了一圈,没发现有完整流程的文章。所以就搞出来并写了这个文章。仅…...

【第16章】Vue实战篇之跨域解决

文章目录 前言一、浏览器跨域二、配置代理1.公共请求2.代理配置 总结 前言 前后端项目分离衍生出浏览器跨域问题,开发之前我们通过配置代理解决这个问题。 一、浏览器跨域 浏览器的跨域问题主要是由于浏览器的同源策略导致的。同源策略是浏览器的一个安全功能&…...

【PB案例学习笔记】-22制作一个语音朗读金额小应用

写在前面 这是PB案例学习笔记系列文章的第22篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…...

glmark2代码阅读总结

glmark2代码阅读总结 一、总体 用输入参数生成testbench项用scene和benchmark管理进行复用通过类的重载,创建出不同的分支和具体的实现点,如scene和mainloop类用例执行又规划,每个scene都统一有setup,等使用scene的继承关系&…...

JetBrains IDE试用期管理工具:从原理到实践的完整指南

JetBrains IDE试用期管理工具:从原理到实践的完整指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 一、问题导入:开发者的试用期困境 作为开发者,我们都经历过这样的场景&a…...

Z-Image-Turbo-辉夜巫女企业应用:IP运营团队快速产出多风格角色宣传图

Z-Image-Turbo-辉夜巫女企业应用:IP运营团队快速产出多风格角色宣传图 1. 引言:当IP运营遇上AI绘图 想象一下这个场景:你是一家游戏或动漫公司的IP运营负责人,下个月要上线一个全新的角色——“辉夜巫女”。市场部催着要宣传海报…...

BGE-Reranker-v2-m3能否替代BM25?语义检索对比评测

BGE-Reranker-v2-m3能否替代BM25?语义检索对比评测 在构建智能问答、文档检索这类系统时,我们常常面临一个核心难题:如何从海量文档中,精准地找到用户真正需要的那几段信息?传统的关键词匹配方法,比如BM25…...

Anything to RealCharacters引擎在创意项目中的应用:生成一致性真人形象

Anything to RealCharacters引擎在创意项目中的应用:生成一致性真人形象 1. 项目背景与核心价值 在数字内容创作领域,将2.5D或卡通形象转换为写实真人风格一直是个技术挑战。传统方法要么效果生硬不自然,要么需要专业美术人员手动调整&…...

OpenClaw+Qwen3-14B自媒体助手:全平台内容一键分发

OpenClawQwen3-14B自媒体助手:全平台内容一键分发 1. 为什么需要全平台内容分发助手 作为一个技术博主兼自媒体运营者,我每天最头疼的事情不是写内容,而是要把同一篇文章适配到不同平台发布。公众号需要特殊排版的Markdown、知乎喜欢带目录…...

OpenClaw隐私保护方案:Qwen3-14b_int4_awq本地化数据处理优势

OpenClaw隐私保护方案:Qwen3-14b_int4_awq本地化数据处理优势 1. 为什么我们需要关注AI自动化中的隐私问题 去年我帮朋友的公司评估一个自动化方案时,遇到一个典型场景:他们需要处理大量客户合同,但担心使用云端AI服务会导致敏感…...

伏秒平衡在DC-DC开关电路中的关键作用与实现

1. 伏秒平衡:DC-DC开关电路的"心跳规律" 第一次拆解电源模块时,我看到电感在PWM信号驱动下规律地"呼吸",就像心脏跳动一样稳定。这种周期性规律就是伏秒平衡的直观体现——当DC-DC电路处于稳态时,电感两端的正…...

【gis系列】从等高线到地形分析:dem生成与高程、坡度、坡向解析

1. 从等高线到DEM:数据准备与处理 搞地形分析的朋友们都知道,DEM(数字高程模型)是我们的基础粮草。但很多人卡在第一步——怎么把原始等高线数据变成可用的DEM?我当年第一次做这个的时候,踩了不少坑&#x…...

SEO_网站SEO排名下降的常见原因及解决办法(264 )

SEO: 网站SEO排名下降的常见原因及解决办法 在当前数字化营销的浪潮中,网站的SEO(搜索引擎优化)排名往往决定了一个网站能否获得足够的流量和潜在客户。许多网站在一段时间后会发现自己的SEO排名出现了明显下降,这是多方面原因造…...

5个贝叶斯概率实战案例:从医学诊断到垃圾邮件过滤(附Python代码)

5个贝叶斯概率实战案例:从医学诊断到垃圾邮件过滤(附Python代码) 贝叶斯概率不仅是统计学中的经典理论,更是解决现实问题的利器。想象一下:医生如何通过检测结果判断患者真实患病概率?邮箱如何智能识别垃圾…...