PyMongo

news2024/9/22 11:27:09

什么是PyMongo

PyMongo 是一个 Python 库,用于与 MongoDB 数据库进行交互。MongoDB 是一个基于文档的 NoSQL 数据库,提供高性能、可扩展性和灵活的架构。PyMongo 提供了一套工具,使得在 Python 程序中操作 MongoDB 变得简单和高效。

安装PyMongo

PyMongo地址:https://pypi.org/project/pymongo/

pip install pymongo

使用PyMongo

Mongodb语句学习请查看:Mongodb命令大全

连接Mongo

from pymongo import MongoClient

# 连接MongoDB服务器,无账号密码
# client = MongoClient('localhost', 27017)

# 连接MongoDB服务器,账号密码
uri = "mongodb://testuser:123456@localhost:27017/admin?authSource=admin"

# 连接到 MongoDB
client = MongoClient(uri)

# 检查连接
client.admin.command('ping')

选择数据库和集合

# 选择数据库
db = client['myDB']

# 选择集合
collection = db['myTable']

插入数据

# 插入一条数据  insert_one
document = {"name": "Tom", "age": 25, "city": "New York"}
result = collection.insert_one(document)
print(result.inserted_id)       # 返回插入id


# 插入多条数据  insert_many
documents = [
    {"name": "Jerry", "age": 30, "city": "San Francisco"},
    {"name": "Spike", "age": 35, "city": "Los Angeles"}
]
results = collection.insert_many(documents)
print(results.inserted_ids)     # 返回插入ids

查询数据

# 查询单个文档
result = collection.find_one({"name": "Tom"})
print(result)

# 查询多个文档
results = collection.find({"city": "New York"})
for document in results:
    print(document)

更新数据

# 更新单个文档
result = collection.update_one({"name": "Tom"}, {"$set": {"age": 25}})
print(result.modified_count)    # 返回更新影响行数

# 更新多个文档
results = collection.update_many({"city": "New York"}, {"$set": {"city": "NYC"}})
print(results.modified_count)   # 返回更新影响行数

删除数据

# 删除单个文档
result = collection.delete_one({"name": "Tom"})
print(result.deleted_count)     # 返回删除影响行数

# 删除多个文档
results = collection.delete_many({"city": "NYC"})
print(results.deleted_count)    # 返回删除影响行数

聚合操作

# 聚合管道
pipeline = [
    {"$match": {"city": "San Francisco"}},
    {"$group": {"_id": "$city", "average_age": {"$avg": "$age"}}}
]

# 执行聚合
results = collection.aggregate(pipeline)
for result in results:
    print(result)

索引操作

from pymongo import MongoClient, ASCENDING

# 连接MongoDB服务器,账号密码
uri = "mongodb://testuser:123456@localhost:27017/admin?authSource=admin"

# 连接到 MongoDB
client = MongoClient(uri)

# 检查连接
client.admin.command('ping')

# 选择数据库和集合
collection  = client['mydb']['users']

# 创建索引
collection.create_index([("name", ASCENDING)])

# 列出索引
indexes = collection.list_indexes()
for index in indexes:
    print(index)

# 删除索引
collection.drop_index([("name", ASCENDING)])

# 列出索引
indexes = collection.list_indexes()
for index in indexes:
    print(index)

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

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

相关文章

【C++程序设计】——利用数组处理批量数据(二)

👨‍💻个人主页:开发者-削好皮的Pineapple! 👨‍💻 hello 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 削好皮的Pineapple! 原创 👨‍&#x1f4…

17085 工作分配问题(优先做)

这个问题可以通过回溯法来解决。我们可以遍历所有可能的工作分配方案&#xff0c;然后找出总劳务费用最小的方案。 以下是C代码实现&#xff1a; #include <iostream> #include <vector> #include <algorithm> using namespace std;const int INF 1e9; co…

羌活基因组--文献精读-36

The chromosome-scale assembly of the Notopterygium incisum genome provides insight into the structural diversity of coumarins 羌活&#xff08;Notopterygium incisum&#xff09;基因组的染色体级别组装为香豆素的结构多样性提供了新的见解 摘要 香豆素是由苯丙素途…

内网安全:多种横向移动方式

1.MMC20.Application远程执行命令 2.ShellWindows远程执行命令 3.ShellBrowserWindow远程执行命令 4.WinRM远程执行命令横向移动 5.使用系统漏洞ms17010横向移动 DCOM&#xff1a; DCOM&#xff08;分布式组件对象模型&#xff09;是微软的一系列概念和程序接口。它支持不同…

Java中操作文件

认识⽂件 我们先来认识狭义上的⽂件(file)。针对硬盘这种持久化存储的I/O设备&#xff0c;当我们想要进⾏数据保存时&#xff0c; 往往不是保存成⼀个整体&#xff0c;⽽是独⽴成⼀个个的单位进⾏保存&#xff0c;这个独⽴的单位就被抽象成⽂件的概 念&#xff0c;就类似办公桌…

【Linux】深入理解线程

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

基于ssm的图书管理系统/图书借阅管理系统

获取源码联系方式请查看文章结尾&#x1f345; 摘 要 网络技术的快速发展给各行各业带来了很大的突破&#xff0c;也给各行各业提供了一种新的管理模块&#xff0c;对于图书管理将是又一个传统管理到智能化信息管理的改革&#xff0c;对于传统的图书借阅的管理&#xff0c;所包…

最长上升子序列LIS(一般+优化)

1. 题目 题目链接&#xff1a; B3637 最长上升子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 输入样例&#xff1a; 6 1 2 4 1 3 4 输出样例&#xff1a; 4 说明/提示&#xff1a; 分别取出 1、2、3、4 即可。 2. 具体实现 2.1 一般做法 dp[i]表示第i个位置的…

医院管理系统读取身份证源码- CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、身份证读取 提高效率&#xff1a;快速获取身份信息&#xff0c;避免手动输入的繁琐和耗时&#xff0c;极大地提升业务办理速度。 准确性高&#xff1a;减少人工输入错误&#xff0c;确保身份信息的精准无误。 便捷操作&#xff1a;简化流程&#xff0c;使工作人员操作更轻…

51单片机个人学习笔记14(直流电机驱动及PWM)

前言 本篇文章属于STC89C52单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 [1-1] 课程简介_哔哩…

Elemnt UI筛选时间功能

html&#xff1a; <el-form-item label"数据筛选: " ><el-date-picker v-model"choose_time" type"datetimerange" size"small" change"chooseTime" style"width:100%;" value-format"yyyy-MM-dd …

逻辑推理之lora微调

逻辑推理微调 比赛介绍准备内容lora微调lora微调介绍lora优势代码内容 start_vllm相关介绍调用 运行主函数提交结果总结相应连接 比赛介绍 本比赛旨在测试参与者的逻辑推理和问题解决能力。参与者将面对一系列复杂的逻辑谜题&#xff0c;涵盖多个领域的推理挑战。 比赛的连接:…

内网穿透--ICMP隧道转发实验

实验背景 通过公司带有防火墙功能的路由器接入互联网&#xff0c;然后由于私网IP的缘故&#xff0c;公网无法直接访问内部web服务器主机。通过内网其它主机做代理&#xff0c;穿透访问内网web服务器主机边界路由器或防火墙做静态NAT映射访问内网服务器inux主机&#xff0c;且策…

C++分析AVL树

目录 AVL树介绍 AVL树平衡因子更新分析 AVL树插入时旋转与平衡因子更新 左单旋 右单旋 左右单旋 右左单旋 AVL旋转可行性 AVL树节点删除&#xff08;待补充&#xff09; AVL树分析 AVL树介绍 二叉搜索树在某些极端情况下可能会退化&#xff0c;为了解决这个问题&…

Redis学习[6] ——Redis缓存设计

八、Redis缓存设计 8.1 为什么Redis用作缓存&#xff1f; 一般来说&#xff0c;数据库的数据都是落在磁盘上的&#xff0c;会导致读写速度很慢。如果用户的请求量非常大&#xff0c;数据库很容易崩溃。由于Redis的数据保存在内存中&#xff0c;读写速度很快&#xff0c;所以R…

SQL注入 报错注入+附加拓展知识,一篇文章带你轻松入门

第5关--------------------------------------------> 前端直接不会显示账号密码的打印&#xff1b;但是在接收前端的数据的那部分后端那里&#xff0c;会看前端传递过来的值是否正确&#xff0c;如果不正确&#xff0c;后端接收值那里就会当MySQL语句执行错误&#xff0c;…

RK3568笔记五十一:W25Q64测试(spi 标准接口 )

若该文为原创文章&#xff0c;转载请注明原文出处。 前面有测试过W25Q64&#xff0c;但那是自己编写的驱动&#xff0c;现在使用内核自带的驱动&#xff0c;只需要通过SPI标准接口&#xff0c;编写应用程序即可以读写W25Q64. 一、硬件原理图 SPI 引脚 功能 MOSI GPIO3_C1 …

【java基础】徒手写Hello, World!程序

文章目录 前提&#xff1a;java环境变量配置使用vscode编写helloworld解析 前提&#xff1a;java环境变量配置 https://blog.csdn.net/xzzteach/article/details/140869188 使用vscode编写helloworld code .为什么用code看下图 报错了&#xff01;&#xff01;&#xff01;&…

【MATLAB】Matlab安装包及验证生成器

通过百度网盘分享的文件&#xff1a;Matlab 链接: https://pan.baidu.com/s/1PF8iP31WFJUYRF7PLyiX2A?pwdxkds 提取码&#xff1a;xkds

简单搭建dns服务器

目录 一.安装服务 二.编写子配置文件 三.编写主配置文件 四.编写文件 五.测试 一.安装服务 [rootnode1 ~]# dnf install bind -y 二.编写子配置文件 [rootnode1 ~]# vim /etc/named.rfc1912.zones 三.编写主配置文件 [rootnode1 ~]# vim /etc/named.conf 四.编写文件 …