iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 操作 MongoDB数据库的方法(非 ODM)
  • 513
分享到

Python 操作 MongoDB数据库的方法(非 ODM)

Python 操作 MongoDBPythonMongoDB 2023-03-19 17:03:28 513人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、连接器的安装和配置二、新增文档三、查询文档四、更新文档五、删除文档一、连接器的安装和配置 pymongo: mongoDB 官方提供的 python 工具包。官方文档: ht

一、连接器的安装和配置

pymongo: mongoDB 官方提供的 python 工具包。官方文档: https://pymonGo.readthedocs.io/en/stable/ pip安装,命令如下:

pip install pymongo

管理 MongoDB 的主要步骤如下:

第一步,连接 MongoDB:

# 方式一: 使用默认的配置
client = MongoClient()
# 方式二: 指定主机地址和端口号
client = MongoClient('localhost', 27017)
# 方式三: 使用URI连接参数
client = MongoClient('mongodb://localhost:27017/')

第二步,管理数据库:

#通过MongoClient对象来管理多个数据库获取数据库(逻辑库)对象
db = client.DATABASE_NAME
db = client["DATABASE_NAME"]
db = client.get_database(name=None, *args)
# 查看所有的数据库(逻辑库)
client.list_databases()
# 删除数据库(逻辑库)
client.drop_database(name_or_database, *args)

第三步,管理集合

# 通过数据库对象db来管理集合
# 获取集合对象
db = client.DATABASE_NAME
db.COLLECTION_NAME
client.DATABASE_NAME.COLLECTION_NAME
db.get_collection(name, *args)
# 查看当前数据库下的集合列表
db.list_collection_names()
# 删除集合
db.drop_collection(name_or_collection, *args)

基础操作示例:

# -*- coding: utf-8 -*-
# @Time    : 2023-03-17 1:47
# @Author  : AmoXiang
# @File    : 1.数据库连接.py
# @Software: PyCharm
# @Blog    : Https://blog.csdn.net/xw1680

from pymongo import MongoClient

# 使用默认配置连接到数据库
# client = MongoClient()
# print(client)
# client.close()
# 指定主机地址和端口号连接到数据库
# client = MongoClient('localhost', 27017)
# 使用URI连接参数连接到数据库
client = MongoClient('mongodb://localhost:27017/')
print(client)
# client.close()
#
# # 访问数据库
# db = client.test
# db = client["test"]
# print(db)
# db = client.get_database('test')
# client.close()
# print(db)
#
# 查看有哪些数据库
db_list = client.list_databases()
# # db_list = client.list_database_names()
for item in db_list:
    print(item)
#
# 查看数据库下有哪些集合
db_test = client["test"]
for item in db_test.list_collection_names():
    print(item)
#
# # 集合对象操作
# data = db_test.students.find_one()
# data = client.test.students.find_one()
data = client.test.get_collection('students').find_one()
print(data)

二、新增文档

说明:pymongo 在插入数据时可以将 Python 的对象转换成 BSON

insert_one():插入一个文档

# 调用方法
result = db.COLLECTION_NAME.insert_one(doc)
# 返回插入的文档ID
result.inserted _id

insert_many():批量新增文档。调用方法:

doc_list = [doc1,doc2]
result = db.COLLECTION_NAME.insert_many(doc_list)

示例:

三、查询文档

pymongo 可以将查询的结果转换成 python 中的对象

常用方法:

find_one(): 按条件查询一个文档
find(): 按条件查询多个文档
count_documents(): 统计满足条件的文档总数
aggregate(): 聚合统计
.sort(): 排序
.skip().limit(): 分页

示例代码:

# -*- coding: utf-8 -*-
# @Time    : 2023-03-18 15:03
# @Author  : AmoXiang
# @File    : 5.查询文档.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680

from bson.objectid import ObjectId
from pymongo import MongoClient, ASCENDING, DESCENDING


class LearnMongoDBSearch(object):
    """ MongoDB查询练习 """

    def __init__(self):
        self.client = MongoClient()

    def search_one(self):
        """ 查询一个文档 """
        temp_obj = self.client.test.newdb.find_one()
        print(temp_obj)
        print('喜欢分数:', temp_obj['likes'])
        # print('注册时间:', temp_obj['reg_date'].date())
        print('姓名:', temp_obj['uname'])

    def search_user_by_pk(self, pk):
        obj_id = ObjectId(pk)
        # user_obj = self.client.test.newdb.find_one({'_id': obj_id})
        # 面向对象的方法,有代码提示
        db = self.client.get_database('test')
        users = db.get_collection('newdb')
        user_obj = users.find_one({'_id': obj_id})
        print(user_obj)

    def search_many(self):
        """ 查询多个文档 """
        db = self.client.get_database('test')
        students = db.get_collection('students')
        # stu_list = students.find()
        # for item in stu_list:
        #     print(item)

        # 查询年龄大于12岁的学生
        stu_list = students.find({'age': {'$gt': 12}}, {'stu_name': 1, 'class_name': 1, 'age': 1})
        for item in stu_list:
            # 注意:  mongo中存储的整数转换成了浮点数
            print(item)

    def paginate(self, page=1, page_size=10):
        """
        分页处理
        :param page: 当前的页
        :param page_size: 每一页数据大小
        :return:
        """
        db = self.client.get_database('test')
        students = db.get_collection('students')
        offset = (page - 1) * page_size
        stu_list = students.find().skip(offset).limit(page_size)
        return stu_list

    def sort_data(self):
        """ 排序 """
        db = self.client.get_database('test')
        grades = db.get_collection('grades')
        # // 将学生的语文成绩从高到低排序
        # db.grades.find({"grade.course_name": "语文"}).sort({"grade.score": -1});
        #
        # //将学生的语文成绩按照年龄和成绩排序
        # db.grades.find({"grade.course_name": "语文"}).sort({"age": -1, "grade.score": -1});
        # db.grades.find({"grade.course_name": "语文"}).sort({"grade.score": -1, "age": -1});

        # 按某一列排序
        # data_list = grades.find({"grade.course_name": "语文"}).sort("grade.score", DESCENDING);
        # for item in data_list:
        #     print(item)

        # 按多列排序
        data_list = grades.find({"grade.course_name": "语文"}).sort([('age', DESCENDING),("grade.score", DESCENDING),])
        for item in data_list:
            print(item)

    def counter_students(self):
        """ 统计newdb中文档总数 """
        db = self.client.get_database('test')
        newdb = db.get_collection('newdb')
        # result = newdb.count_documents({})
        result = newdb.count_documents({"uname": {"$eq": "张三"}})
        print(result)

    def test_aggregate(self):
        """
        聚合统计:及格的学生成绩
        """
        db = self.client.get_database('test')
        grades = db.get_collection('grades')
        result = grades.aggregate([
            # //where
            {
                '$match': {"grade.score": {'$gte': 60}}
            },
            # //group by
            {
                '$group': {
                    '_id': "$stu_no",
                    'total': {'$sum': 1}
                }
            },
            # // having
            {
                '$match': {
                    'total': {'$eq': 3}
                }
            }
            ])
        for item in result:
            print(item)


if __name__ == '__main__':
    obj = LearnMongoDBSearch()
    # obj.search_one()
    # obj.search_user_by_pk('6411ee77b6170000b4003f95')
    # obj.search_many()
    # stu_list = obj.paginate(page=3)
    # for item in stu_list:
    #     print(item)

    # obj.sort_data()
    # obj.counter_students()
    obj.test_aggregate()

四、更新文档

回顾,更新数据表达式,如下表所示:

修改一个文档,调用方法:

update_one(filter, update, *args)

替换一个文档,调用方法:

replace_one(filter, replacement, *args)

批量修改文档,调用方法:

replace_one(filter, replacement, *args)

快捷方法:

find_one_and_update(filter, update, *args)  # 修改一个文档
find_one_and_replace(filter, replacement, *args)  # 替换一个文档
# 注意返回值的不同

返回结果:

acknowledged:结果是否已经被确认
modified_count:修改的文档数
matched_count:满足条件的文档数
raw_result:原始数据
upserted_id:更新的ID (upsert=True)

示例代码:

# -*- coding: utf-8 -*-
# @Time    : 2023-03-18 14:56
# @Author  : AmoXiang
# @File    : 4.修改文档.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680

from pymongo import MongoClient

class LearnMongoDBUpdate(object):
    """ MongoDB更新练习 """

    def __init__(self):
        self.client = MongoClient()

    def test_update_one(self):
        """ 更新一个文档 """
        db = self.client.get_database('test')
        newdb = db.get_collection('newdb')
        result = newdb.update_one({}, {'$set': {'likes': 70}})
        print(result.modified_count)

    def test_replace_one(self):
        """ 替换一个文档 """
        db = self.client.get_database('test')
        newdb = db.get_collection('newdb')
        result = newdb.replace_one({}, {'uname': '张三'})
        print(result.modified_count)

    def test_update_many(self):
        """ 批量更新文档 """
        db = self.client.get_database('test')
        newdb = db.get_collection('newdb')
        result = newdb.update_many({}, {'$set': {'likes': 90}})
        print('修改的数量:', result.modified_count)
        print('满足条件的数量:', result.matched_count)

    def test_update_shortcut(self):
        """ 更新文档的快捷方法 """
        db = self.client.get_database('test')
        newdb = db.get_collection('newdb')
        # 此处返回一个文档对象
        result = newdb.find_one_and_update({}, {'$set': {'sex': '未知'}})
        print(result['_id'])
if __name__ == '__main__':
    obj = LearnMongoDBUpdate()
    # obj.test_update_one()
    # obj.test_replace_one()
    # obj.test_update_many()
    obj.test_update_shortcut()

五、删除文档

删除一个文档,调用方法如下:

result = db.COLLECTION_NAME.delete_one(filter, *args)
# 返回已经删除的记录数 result.deleted_count
# 删除时返回文档对象 
find_one_and_delete(filter, *args)

批量删除文档,调用方法:

result = db.COLLECTION_NAME.delete_many(filter, *args)
# 返回已经删除的记录数
result. deleted_count

示例代码:

# -*- coding: utf-8 -*-
# @Time    : 2023-03-18 14:34
# @Author  : AmoXiang
# @File    : 3.删除文档.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680

from pymongo import MongoClient


class LearnMongoDBDelete(object):
    """ MongoDB删除练习 """

    def __init__(self):
        self.client = MongoClient()

    def test_delete_one(self):
        """ 删除一个文档 """
        db = self.client.get_database('test')
        newdb = db.get_collection('newdb')
        result = newdb.delete_one({})
        print(result.deleted_count)

    def test_delete_many(self):
        """ 批量删除文档 """
        db = self.client.get_database('test')
        users = db.get_collection('newdb')
        # 删除所有的数据
        result = users.delete_many({"likes": {"$lte": 90}})
        print(result.deleted_count)

    def test_delete_shortcut(self):
        """ 删除文档的快捷方法 """
        db = self.client.get_database('test')
        newdb = db.get_collection('newdb')
        result = newdb.find_one_and_delete({})
        print(result['title'])


if __name__ == '__main__':
    obj = LearnMongoDBDelete()
    # obj.test_delete_one()
    # obj.test_delete_shortcut()
    obj.test_delete_many()

至此今天的学习就到此结束了,笔者在这里声明,笔者写文章只是为了学习交流,以及让更多学习数据库的读者少走一些弯路,节省时间,并不用做其他用途,如有侵权,联系博主删除即可。感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!

到此这篇关于Python 操作 MongoDB ----非 ODM的文章就介绍到这了,更多相关Python 操作 MongoDB内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python 操作 MongoDB数据库的方法(非 ODM)

本文链接: https://www.lsjlt.com/news/200397.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 操作 MongoDB数据库的方法(非 ODM)
    目录一、连接器的安装和配置二、新增文档三、查询文档四、更新文档五、删除文档一、连接器的安装和配置 pymongo: MongoDB 官方提供的 python 工具包。官方文档: https://pymongo.readt...
    99+
    2023-03-19
    Python 操作 MongoDB
  • Python 操作 MongoDB数据库的方法(非 ODM)
    目录一、连接器的安装和配置二、新增文档三、查询文档四、更新文档五、删除文档一、连接器的安装和配置 pymongo: MongoDB 官方提供的 Python 工具包。官方文档: ht...
    99+
    2023-03-19
    Python 操作 MongoDB Python MongoDB
  • Python怎么操作MongoDB数据库
    这篇文章主要介绍“Python怎么操作MongoDB数据库”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么操作MongoDB数据库”文章能帮助大家解决问题。一、连接器的安装和配置pym...
    99+
    2023-07-05
  • python 操作 mongodb 数据库详情
    目录一、安装二、连接数据库三、创建数据库四、所有数据库五、创建集合六、插入数据七、查询数据八、高级查询九、count统计十、修改数据十一、删除数据十二、数据排序一、安装 pip in...
    99+
    2024-04-02
  • 如何用python 操作MongoDB数据库
    目录一、前言 二、操作 MongoDB 1、安装 pymongo 2、连接 MongoDB 3、选择数据库 4、选择集合 5、插入数据 6、查询 7、更新数据 8、删除 一...
    99+
    2024-04-02
  • Python中怎么操作MongoDB数据库
    这期内容当中小编将会给大家带来有关Python中怎么操作MongoDB数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、连接服务器连接服务器需要提供一个地址和接口import pymong...
    99+
    2023-06-15
  • MongoDB数据库文档操作方法(必看篇)
    前面的话 本文将详细介绍MongoDB数据库关于文档的增删改查 如果数据库中不存在集合,则MongoDB将创建此集合,然后将文档插入到该集合中 ...
    99+
    2024-04-02
  • mongodb数据库查询操作方法有哪些
    MongoDB数据库的查询操作方法有以下几种:1. find():用于从集合中查找文档。可以通过指定查询条件来筛选文档,并可以使用投...
    99+
    2023-09-04
    mongodb数据库
  • 怎么用python包操作mongodb数据库
    本文小编为大家详细介绍“怎么用python包操作mongodb数据库”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用python包操作mongodb数据库”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、安...
    99+
    2023-06-30
  • Python中怎么操作MongoDB文档数据库
    Python中怎么操作MongoDB文档数据库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.Pymongo 安装安装pymongo:pip install&nbs...
    99+
    2023-06-02
  • python 实现 pymysql 数据库操作方法
    目录一、安装二、连接数据库三、创建数据库四、创建数据表五、插入一条数据六、插入多条数据七、数据统计八、获取表名信息九、获取单条数据十、查询多条数据十一、查询所有数据十二、上下文管理一...
    99+
    2024-04-02
  • NodeJsExpress框架操作MongoDB数据库执行方法讲解
    目录1、Mongoose模块2、Mongoose模块的使用3、关于模型名称和数据库中集合名称的对应关系4、mongoose的基本操作1、Mongoose模块 (1)是一个对象模型工具...
    99+
    2023-01-10
    NodeJs操作MongoDB数据库 NodeJs MongoDB
  • python常用库之pymongo库(Python操作Mongodb数据库)| Django项目连接MongoDB方式选型(MongoEngine)
    文章目录 python库-pymongo库 | Python操作Mongodb数据库1. pymongo包2. 安装pymongo包3. 官方示例使用连接池连接MongoDBpymongo版本...
    99+
    2023-09-20
    mongodb 数据库 python
  • pymysql操作mysql数据库的方法
    目录前言1、pymysql.connent2、conn.cursor()3、cursor.execute()4、cursor.executemany()5、cursor.fetchone()6、cursor.scroll...
    99+
    2023-04-19
    pymysql操作mysql数据库 pymysql操作mysql
  • C#操作Access数据库的方法
    这篇文章主要讲解了“C#操作Access数据库的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#操作Access数据库的方法”吧!C#操作Access数据库的基础知识1.通过ADO.N...
    99+
    2023-06-17
  • Python的数据库操作
    使用原生SQL语句进行对数据库操作,可完成数据库表的建立和删除,及数据表内容的增删改查操作等。其可操作性很强,如可以直接使用“show databases”、“show tables”等语句进行表格之外的部分操作。 Centos7远程操作...
    99+
    2023-01-31
    操作 数据库 Python
  • python操作MongoDB的方法是什么
    这篇文章主要介绍“python操作MongoDB的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python操作MongoDB的方法是什么”文章能帮助大家解决问题。MongoDB ...
    99+
    2023-06-28
  • PHP中如何操作MongoDB 数据库
    这期内容当中小编将会给大家带来有关PHP中如何操作MongoDB 数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1,连接MongoDB数据库$conn =...
    99+
    2024-04-02
  • Java中怎么操作MongoDB数据库
    今天就跟大家聊聊有关Java中怎么操作MongoDB数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java与mongodb的连接1. 连单台m...
    99+
    2024-04-02
  • 怎么操作mongodb数据库文件
    要操作MongoDB数据库文件,可以按照以下步骤进行操作:1. 安装MongoDB:首先,需要安装MongoDB数据库。你可以从Mo...
    99+
    2023-08-31
    mongodb数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作