• Python 操作mongodb库



    活动地址:CSDN21天学习挑战赛

    Python 操作mongodb库

    1 mongodb介绍

    MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决

    MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    1.1 mongodb基础概念

    在mongodb中是通过数据库、集合、文档的方式来管理数据,下边是mongodb与关系数据库的一些概念对比:

    SQL术语/概念MongoDB术语/概念解释/说明
    databasedatabase数据库
    tablecollection数据库表/集合
    rowdocument数据记录行/文档
    columnfield数据字段/域
    indexindex索引
    table joins表连接( MongoDB不支持)
    primary keyprimarykey主键MongoDB自动在每个集合中添加jd的主键

    1、一个mongodb实例可以创建多个数据库
    2、一个数据库可以创建多个集合
    3、一个集合可以包括多个文档。
    在这里插入图片描述

    1.2 mongodb优缺点

    优点:
    1.读写效率高:由于文档模型把相关数据集中在-块,在普通机械盘上读数据的时候不用花太
    多时间去定位磁头,因此在IO性能上有先天独厚的优势
    2.可扩展能力强:关系型数据库很难做分布式的原因就是多节点海量数据关联有巨大的性能问
    题。如果不考虑关联,数据分区分库,水平扩展就比较简单;
    3.动态模式:文档模型支持可变的数据模式,不要求每个文档都具有完全相同的结构,例如在
    同一个文档中支持同一一个字段拥有不同的数据类型,对很多异构数据场景支持非常好。
    4.模型自然:文档模型最接近于我们熟悉的对象模型,支持数组和嵌套对象作为值。从内存到
    存储,无需经过ORM的双向转换,性能上和理解上都很自然易懂。
    5.强大的查询语言:丰富而富有表现力的查询语言,使您可以按任意字段进行过滤和排序,无
    论它在文档中有多嵌套。支持聚合和其他现代用例,例如基于地理的搜索,图形搜索和文本搜
    索。查询本身就是JSON ,因此很容易组合。不再需要串联字符串来动态生成SQL查询。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    缺点:
    与关系型数据库,比如mysq|截然不同的查询语法,需 要重新学习mongodb的操作语法。 哈哈
    
    • 1
    • 2

    2 mongodb 下载安装

    可以看 无羡 博主的内容 MongoDB数据库入门到精通

    3 python 操作mongodb

    随着不断的学习内容python也安装了很多库,使用之前如何查找是否已经安装了该库可以将将已安装的库列表保存到文本文件夹中 然后去文件里搜索是否已经安装了

    pip freeze >C:\Users\Administrator\Desktop\install.txt
    
    • 1

    安装文本文件中所有库

    pip install -r  C:\Users\Administrator\Desktop\install.txt
    
    • 1

    3.1 python 安装pymongo库

    普通安装 :

    pip install pymongo
    
    • 1

    在这里插入图片描述

    卸载已安装的库:

    pip uninstall pymongo
    
    • 1

    在这里插入图片描述

    3.2 Python对 mongodb增删改查

    1. 导入pymongodb 模块:import pymongo
    
    待补充
    
    • 1
    • 2
    • 3

    代码

    import pymongo
    
    #   建立连接
    client = pymongo.MongoClient()
    
    #   指定数据库   (不存在则会新建)
    db = client['py_mongo']
    #   删除数据库
    # client.drop_database('py_mongo_temp')
    
    
    #   创建集合
    # db.create_collection('col_temp')
    #   删除集合
    # print(db.drop_collection('col_temp'))
    #   指定集合     (不存在则会新建)
    collection = db['mongo_col']
    
    # collection = pymongo.MongoClient()['py_mongo']['mongo_col']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    insert() 、 remove() 、 update() 、 find()

    #   增   insert()
    #   如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId
    #   增加一条
    # collection.insert({'_id':1,'name':'JiYu','num':0})
    #   增加多条
    # collection.insert(  [
    #     {'name':'jiyu','num':12},
    #     {'name':'jiyu','num':34},
    #     {'name':'nianhua','num':12},
    #     {'name':'nianhua','num':34},
    # ]   )
    
    
    #   删   remove()
    #   删除集合中满足条件的所有文档
    # collection.remove({'name':'jiyu'})
    #   只删除集合中满足条件的第一条文档
    # collection.remove({'name':'nianhua'},multi=False)
    #   删除所有
    # collection.remove()
    
    
    #   改   update()
    #   修改一条数据  只有name,没有num了,整条数据变成里的内容
    # collection.update({'name':'jiyu'},{'name':'nianhua'})
    #   指定属性修改  $set
    # collection.update({'name':'jiyu'},{'$set':{'name':'nianhua'}})
    #   修改集合中所有满足条件的文档:multi: true
    # collection.update({'name':'nianhua'},{'$set':{'name':'NianHua'}},multi=True)
    
    
    #   查   find()
    #   查询所有
    # for i in collection.find():
    #     print(i)
    #   根据条件查询
    # for i in collection.find({'name': 'NianHua'}):
    #     print(i)
    #   and 和 or 条件
    # condition = {'$or': [{'num': 12}, {'name': 'NianHua'}]}
    # for i in collection.find(condition):
    #     print(i)
    #   操作符
    # for i in collection.find({'num': {'$gt': 20}}):
    #     print(i)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

  • 相关阅读:
    分类网络知识蒸馏【附代码】
    为什么OpenCV计算的帧率是错误的?
    Java观察者模式之总有你想不到的知识
    前端反卷计划-组件库-01-环境搭建
    分库分表ShardingSphere-JDBC笔记整理
    【Unity3D】相机
    『UniApp』uni-app-打包成App
    Github 2024-04-21php开源项目日报Top10
    java programer future plan
    一份重要数据,科技公司和ai的相关度,MongoDB和GitLab在列
  • 原文地址:https://blog.csdn.net/u014096024/article/details/126249328