Pymongo 使用

pymongo模块详解(含官方文档翻译) github pymongo支持MongoDB 2.6, 3.0, 3.2, 3.4, 3.6 and 4.0. PyMongo 3.8.0 Documentation 建立与MongoClient的连接 使用PyMongo的第一步是创建一个MongoClient来运行mongod实例。很简单 from pymongo import MongoClient client = Mongo... 阅读详情

Pymongo

说明:以下操作 pymongo: 4.0.4 mongo: 4.4.4

MongoDB 是由 C++ 语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似 JSON 对象,它的字段值可以包含其他文档、数组以及文档数组,非常灵活。

连接 MongoDB

没有开启认证 mongo

连接 MonogoDB 时,我们需要使用 PyMonogo 中的 MongoClient。连接 MongoDB 有两种形式

  1. 方式一:传入 host 和 port

    import pymongo
    
    client = pymongo.MongoClient(host='127.0.0.1', port=27017)
    
  2. 方式二:传入 ‘mongodb://{host}:{port}’

    import pymongo
    
    client = pymongo.MongoClient('mongodb://127.0.0.1:27017')
    

    以上两种形式均可创建 MongoDB 的连接对象。

开启认证的 mongo

连接方式:

  1. pymongo 版本小于 3.9
import pymongo

client = pymongo.MongoClient(host='127.0.0.1', port=27017)
# db 表示数据库名称,username 用户名 password 密码
client.db.authenticate(useranme, password)
  1. pymongo 版本大于等于 4.0 的
from pymongo import MongoClient

client = MongoClient(host='127.0.0.1', port=27017, username='root', password='admin', authSource='test')

官网版本改动改动说明:https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html#database-authenticate-and-database-logout-are-removed

注意:需要根据项目下载的版本选择不同的认证方式,否则会导致认证失败

指定数据库

MongoDB 中可以建立多个数据库,下面我们可以指定操作某个数据库,下面我们以 test 数据库为例

# 建立数据库连接
db = client.test # or db = client['test']

指定集合

MongoDB 的每个数据库又包含多个集合(collection),可以把他们看作关系型数据库中的表,下面我们指定一个集合,这里我们指定集合为 student,同样指定集合也有两种方式

collection = db.students # or collection = db['students']

插入数据

下面我们可以插入数据啦,插入数据也有多种方式,下面👇我们逐一介绍

插入单条数据

  • insert_one:插入单条数据
student = {
    'id': 1,
    'name': 'test',
}
res = collection.insert_one(student)
print(res, res.inserted_id)

说明:在 MongoDB 中,每条数据其实都有一个 _id 属性来唯一标识。如果没有显式指明该属性,MongoDB 会自动生成一个 ObjectId 类型的 _id 属性。insert_one 中返回的 object 中 inserted_id 可以获取该属性

插入多条数据

  • insert_many:插入多条数据
studends = [
    {
        'id': 1,
        'name': 'test',
    },
    {
        'id': 2,
        'name': 'test2',
    }
]
res = collection.insert_many(studends) # >>> [ObjectId('623def841a44a3456deff68d'), ObjectId('623def841a44a3456deff68e')]

更新

更新操作和插入操作类似,Pymongo 提供了两种更新方法,即 update_one() 和 update_many() 方法,其中 update_one() 方法只会更新满足条件的第一条记录

  • 如果使用 $set,则只更新 object 对象内已经存在的字段,如果更新前还有其他字段,则不更新也不删除
  • 如果不使用 $set,则会把更新的数据全部用 object 对象替换,如果原本存在其他字段则会被删除
# 更新满足条件{'id', 2}的第一条记录,将 id 更新为 3
res = collection.update_one({'id': 2}, {'$set': {'id': 3, 'age': 10}})

# 更新返回结果是一个对象,我们可以调用matched_count和modified_count属性分别获得匹配的数据条数和影响的数据条数。
print(res.matched_count, res.modified_count)
#打印结果:1 1

# 更新满足条件 id>1 的所有记录,id 字段自加 100
res = collection.update_many({'id': {'$gt': 1}}, {'$inc': {'id': 100}})

# 打印更新匹配和影响的记录数
print(res.matched_count, res.modified_count)
#打印结果:1 1

stu = {'id': 4, 'name': 'test3'}
#upsert=True表示如果没有满足更新条件的记录,则会将stu插入集合中
res = collection.update_one({'id': 4}, {'$set': stu}, upsert=True)
print(res.matched_count, res.modified_count)
#打印结果:0 0

查询

插入数据后,我们可以利用 find_one() 或者 find() 方法进行查询

  • find_one():查询单个

    res = collection.find_one({'id': 2})
    print(res) # >>> {'_id': ObjectId('623def841a44a3456deff68e'), 'id': 2, 'name': 'test2'}
    
  • find():查询多个

    res = collection.find({'id': 1})
    print(list(res))
    
    # >>> [{'_id': ObjectId('623dd9c8e9fd60c3b848759d'), 'id': 1.0, 'name': 'test'}, {'_id': ObjectId('623de23f8345ac3b087d264e'), 'id': 1, 'name': 'test'}]
    

删除

删除数据同样有两种方法,delete_one() 和 delete_many()

  • delete_one():删除符合条件的一条记录
  • delete_many():删除符合条件的所有记录
# 删除满足条件的第一条记录
res = collection.delete_one({'id': 1})
# 同样可以通过返回对象的 deleted_count 属性查询删除的记录数
print(result.deleted_count)
# 打印结果:1

# 删除满足条件的所有记录,以下为删除 page < 90 的记录
result = collection.delete_many({'id': {'$lt': 2}})
print(result.deleted_count)
# 打印结果:2

条件查询

  1. 条件比较符如下表:
    img1

如果要查询 id 大于 3 的数据,写法如下:

results = collection.find({'id': {'$ge': 3}})
  1. 这里还有一些功能符号进行归类
    img2

具体操作可以查看官网提供文档:https://docs.mongodb.com/manual/reference/operator/query/

计数

在某些场景下我们需要统计一共有多少条数据,可以调用 count() 方法。find() 中还可以增加过滤条件

count = collection.find().count()

排序

排序是时直接调用 sort() 方法,并在其中传入排序的字段及升、降序标志即可

  • 升序:pymongo.ASCENDING
  • 降序:pymongo.DESCENDING
# 按照 id 降序
res = collection.find().sort('id', DESCENDING)
print(list(res))

更多操作请查看 Pymongo 文档:https://pymongo.readthedocs.io/en/stable/index.html

Python3 之 PyMongo 的安装与使用 PyMongo 模块是 Python 对 MongoDB 操作的接口包,能够实现对 MongoDB 的增删改查及排序等操作。 阅读详情

相关推荐

Python PyMongo 深度解析:从 MongoDB 获取数据的全面指南

本文介绍了使用PyMongoMongoDB获取数据的核心方法和最佳实践。主要内容包括:PyMongo的游标机制(惰性加载、可迭代性和内存效率)、基本查询方法(find()和find_one())、高级查询操作(过滤条件、投影、排序、分页等)、聚合查询以及错误处理和性能优化技巧。文章还涵盖了环境准备、数据库连接、示例数据准备等基础内容,并提供了处理BSON特殊类型和游标迭代的实用指导。最后强调了索引优化、内存管理、批处理、安全性等高级考量,帮助开发者高效、安全地从MongoDB中获取数据。

weixin_42107409的博客 1483

python中pymongo库用法详解

python中pymongo库用法详解

IT之一小佬的博客 1万+

在Python中使用pymongo操作mongodb

最近在学习Python爬虫,平常将爬取的数据都存入Excel表格中,但是当数据量大的时候存取和查、删、改就不方便了,这时数据库就是你很好的选择了(其实我就是觉得使用Excel好low而已),在学习的过程中开始接触mongodb这个数据库mongodb是一种非关系型数据库,数据存取的形式与Python中的字典很相似,所以在Python中使用mongodb是一个不错的选择,废话不多说,下面总结一下我最

NeilPy的博客 1万+

PyMongo

pymongo是Python中用来操作MongoDB的一个库,MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。其文件存储格式类似于JSON,叫BSON,通俗的理解,就是Python中的字典键值对格式。 BSON结构文档: { title: 'MongoDB', last_editor: '192.168.1.122', last_modified: new Date('27/06/2011'), body: 'MongoDB

studyeboy的专栏 1万+

python之PyMongo使用总结

PyMongo是什么  PyMongo是驱动程序,使python程序能够使用Mongodb数据库使用python编写而成. 安装  环境:Ubuntu 14.04+python2.7+MongoDB 2.4     先去官网下载软件包,地址点击打开链接.解压缩后进入,使用python setup.py install 进行安装     或者用pip安装pip -m install

不忘初心,方得始终 2万+

pymongo的安装使用

首先安装一个MongoDB,具体不解释了 自行google 装好之后的运行是这样的 然后我使用的是Anaconda , 一个很好的使用工具在有pip的情况下 使用pip安装 pip install pymongo     这样就安装好了。 版权声明:本文为博主原创文章,未经博主允许不得转载。https://mp.csdn.net/postedit/81043812...

x_bessie的博客 8174

pymongo使用

pymongo使用 collection 属性:full_name,name,database insert(self, doc_or_docs, manipulate=True, safe=False, check_keys=True, **kwargs):当manipulate=True 时,_id 会被自动添加到 dict,并返回些 _id(or list(_id)), 为False 时,

lebanzi的博客 969

pymongo 学习总结

老规矩,英文文档:http://api.mongodb.com/python/current/examples/authentication.html一、mongodb1、简介 MongoDB是一种强大、灵活、追求性能、易扩展的数据存储方式。是面向文档的数据库,不是关系型数据库,是NoSQL(not only SQL)的一种。所谓的面向文档,就是将原来关系型数据库中的“行”的概念换成了更加灵活的

woshixiaosimao的博客 4万+

pymongo

pymongo用法 from pymongo import MongoClient #创建数据连接 conn = MongoClient('localhost',27017) #创建数据库对象 db = conn.stu #创建集合对象 myset = db.class4 #数据操作 # print(dir(myset)) # 插入文档 myset.insert_many([{'n...

weixin_43278089的博客 535

【RPA开发】pymongo 使用教程

MongoDB 是一种流行的 NoSQL 数据库,也就是非关系型数据库使用文档存储数据,而不是传统的关系型数据库中的行和表。总之,MongoDB 具有高度的可扩展性和灵活性,可以用于各种类型的应用程序。pymongo 提供了一组简单而强大的 API,可以用于连接,查询和操作 MongoDB 数据库

尹煜的博客 1675

pymongo操作简单实战

python操作mongo,那就pymongo了,不废话 直接开始: 安装: pip install pymongo 使用: from pymongo import MongoClient # root:用户名;123456:密码;该用户拥有该库的读写权限 mongoIP = 'mongodb://root:123456@192.168.xxx.xxx:27017' mongoNam...

God丶Davide的博客 8万+

13.爬虫---PyMongo安装与使用

PyMongo 为 Python 程序员提供了一个强大且易于使用MongoDB 接口。通过上述教程,你可以学会如何安装 PyMongo、连接 MongoDB、创建数据库和集合、插入和查询文档、更新和删除数据,以及如何对结果进行排序、跳过和限制。这些操作构成了与 MongoDB 数据库交互的基础。

hsadfdsahfdsgfds的博客 2608

python常用库之pymongo库(Python操作Mongodb数据库)| Django项目连接MongoDB方式选型(MongoEngine)

PyMongo用于与Python与MongoDB数据库进行交互的工具。bson包是Python的[BSON格式](http://bsonspec.org/) 的实现。Pymongo包是MongoDB的本地Python驱动程序。gridfs包是gridfs 的pymongo实现。

西京刀客 4571

PyMongo使用方法详解!最全面的教程

MongoDB 操作数据库: # -*- coding=utf-8 -*- #引入Mongo模块 ↓ import pymongo #连接数据库服务器 ↓ client = pymongo.MongoClient("localhost",27017) #选择数据库 ↓ db_test = client.test #推荐使用:db_test = client["test"] #获取集合 ↓ collection1 = db_test.col #获取collection1集合内全部数据 ↓ x = col

java_hellochen的博客 6874

pymongo使用教程

首先导入: from pymongo import MongoClient 连接mongodb: mongo_client = MongoClient(mongo_host, mongo_port, connect=False) 连接数据库:例如连接my_db数据库,没有则自动创建 mongo_db = mongo_client["my_db"] 认证登录(如果没有设mongodb的账号和密码的话,此步骤不用): mongo_db.authenticate('username', 'password'

s_daqing的博客 4425

pymongo 存取

前言 准备 简单操作 数据库连接 增insert 插入单条记录 插入多条记录 改 update 方式一 方式二 删 remove 查 find 查询所有 查询 某个符合要求的字段 查询限制条数 查询某几个字段的值 查询集合内共有多少条记录 对查询结果排序输出 模糊查询 存在性查询 in 查询 not in 查询...

weixin_34194551的博客 359

魔坊APP项目-11-PyMongo数据库连接,管理、集合管理、文档管理(添加文档、查询文档、删除文档、更新文档)

PyMongo 安装: pip install pymongo 一、数据库连接 数据库连接,无密码 from pymongo import MongoClient # 数据库链接,必须保证当前系统能正常访问mongodb!!! connect = MongoClient('mongodb://127.0.0.1:27017/') # 创建/切换数据库数据库不存在则会库中有文档以后,自动创建 my_db = connect['mofang'] print(my_db) # 数据库信息 # 创建/

Hi文的博客 1676
上一篇: 一个 emoji 引发的思考
下一篇: 多进程构建 IP 代理池
流浮生
博客等级 码龄7年 54粉丝 144原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值