• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    如何用python 操作MongoDB数据库

    一、前言

      MongoDB属于 NoSQL(非关系型数据库),是一个基于分布式文件存储的开源数据库系统。

    二、操作 MongoDB

    1、安装 pymongo

    python 使用第三方库来连接操作 MongoDB,所以我们首先安装此库。

    pip3 install pymongodb

    2、连接 MongoDB

    使用 MongoClient 类连接,以下两种参数方式都可以:

    from pymongo import MongoClient
    
    # 连接方式一
    client = MongoClient(host='localhost',port=27017)
    # 连接方式二
    # client = MongoClient('mongodb://localhost:27017/')

    3、选择数据库

    MongoDB 可以创建很多 db,指定我们需要的 db 即可

    # 方式一
    db = client.Monitor
    # 方式二
    # db = client['Monitor']

    4、选择集合

    db 内包含很多个集合,有点类似 mysql 这类关系型数据库中的表

    # 方式一
    collection = db.test
    # 方式二
    # collection = db['test']

    5、插入数据

    插入一条数据,MongoDB 每条记录都有一个唯一标识。返回一个 InsertOneResult 对象,若需要获取唯一标识,找到 InsertOneResult 对象的属性 inserted_id 即可

    from pymongo import MongoClient
    
    class mongodb:
        def __init__(self,host,db,port = 27017):
            '''
            :param host: str mongodb地址
            :param db: str 数据库
            :param port: int 端口,默认为27017
            '''
            host = host
            db = db
            self.port = port
            client = MongoClient(host=host,port=port)
            self.db = client[db]
    
        def insert_one(self,table,dic):
            '''
            :param table: str 数据库中的集合
            :param dic: dict 要插入的字典
            :return: 返回一个包含ObjectId类型的对象
            '''
            collection = self.db[table]
            rep = collection.insert_one(dic)
    
            return repif __name__=='__main__':
        dic = {'姓名':'小明','English':100,'math':90}
        db = mongodb(host='localhost',db = 'test')
        rep = db.insert_one('test',dic)
        print(rep.inserted_id)

    插入多条数据,使用 insert_many 批量插入

    from pymongo import MongoClient
    
    class mongodb:
        def __init__(self,host,db,port = 27017):
            '''
            :param host: str mongodb地址
            :param db: str 数据库
            :param port: int 端口,默认为27017
            '''
            host = host
            db = db
            self.port = port
            client = MongoClient(host=host,port=port)
            self.db = client[db]
    
        def insert_one(self,table,dic):
            '''
            :param table: str 数据库中的集合
            :param dic: dict 要插入的字典
            :return: 返回包含一个ObjectId类型的对象
            '''
            collection = self.db[table]
            rep = collection.insert_one(dic)
    
            return rep
    
        def insert_many(self,table,lists):
            '''
            :param table: str 数据库中的集合
            :param dic: dict 要插入的列表,列表中的元素为字典
            :return: 返回包含多个ObjectId类型的列表对象
            '''
            collection = self.db[table]
            rep = collection.insert_many(lists)
    
            return rep
    
    
    if __name__=='__main__':
        lists = [{'姓名':'小明','English':100,'math':90},
                 {'姓名':'小华','English':90,'math':100}]
        db = mongodb(host='localhost',db = 'test')
        rep = db.insert_many('test',lists)
        for i in rep.inserted_ids:
            print(i)

    6、查询

    1)常规查询

    from pymongo import MongoClient
    
    class mongodb:
        def __init__(self,host,db,port = 27017):
            '''
            :param host: str mongodb地址
            :param db: str 数据库
            :param port: int 端口,默认为27017
            '''
            host = host
            db = db
            self.port = port
            client = MongoClient(host=host,port=port)
            self.db = client[db]
    
        def find_one(self,table,dic):
            '''
            :param table: str 数据库中的集合
            :param dic: dict 查询条件
            :return: dict 返回单条记录的字典
            '''
            collection = self.db[table]
            rep = collection.find_one(dic)
    
            return rep
    
        def find(self,table,dic):
            '''
            :param table: str 数据库中的集合
            :param dic: dict 查询条件
            :return: list 返回查询到记录的列表
            '''
            collection = self.db[table]
            rep = list(collection.find(dic))
    
            return rep
    
    if __name__=='__main__':
        # 查询 English 成绩为 100 的所有记录
        dic = {'English':100}
        db = mongodb(host='localhost',db = 'test')
        rep = db.insert_many('test',dic)
        print(rep)

    2)范围查询

    有时候我们需要范围比较查询,比如要查询 English 成绩为 80~90 ,可以使用比较符:dic = {'English':{'$in':[80,90]}}

    3)计数

    直接调用 count() 方法,返回一个 int 类型的数字

    # 计数查询只需要在普通查询后加上 count() 即可
    count = collection.find().count()  
    # count = collection.find({'English':{'$gt':90}}).count()

    4)排序

    排序时,直接调用sort()方法,并在其中传入排序的字段及升降序标志,返回一个游标对象

    # 正序 ASCENDING,倒序 DESCENDING。list()将游标对象转成列表
    data = list(collection.find(dic).sort('姓名',pymongo.DESCENDING))

    7、更新数据

    首选查到需要更新的数据,然后将该数据更新,返回一个 UpdataResult 对象, raw_result 属性中包含 update 生效的个数。

    from pymongo import MongoClient
    
    class mongodb:
        def __init__(self,host,db,port = 27017):
            '''
            :param host: str mongodb地址
            :param db: str 数据库
            :param port: int 端口,默认为27017
            '''
            host = host
            db = db
            self.port = port
            client = MongoClient(host=host,port=port)
            self.db = client[db]
    
        def update_one(self,table,condition,dic):
            '''
            :param table: str 数据库中的集合
            :param condition: dict 查询条件
            :param dic: dict 更新的数据
            :return: 返回UpdateResult对象
            '''
            collection = self.db[table]
            # $set 表示只更新dic字典内存在的字段
            rep = collection.update_one(condition,{'$set':dic})
            # 会把之前的数据全部用dic字典替换,如果原本存在其他字段,则会被删除
            # rep = collection.update_one(condition, dic)
    
            return rep
    
        def update_many(self,table,condition,dic):
            '''
            :param table: str 数据库中的集合
            :param condition: dict 查询条件
            :param dic: dict 更新的数据
            :return:返回UpdateResult对象
            '''
            collection = self.db[table]
            # $set 表示只更新dic字典内存在的字段
            rep = collection.update_many(condition,{'$set':dic})
            # 会把之前的数据全部用dic字典替换,如果原本存在其他字段,则会被删除
            # rep = collection.update_many(condition, dic)
    
            return rep
    
    
    if __name__=='__main__':
        condition = {'English':80}
        dic = {'English':60}
        db = mongodb(host='mongodb-monitor.monitor.svc.test.local',db = 'test')
        rep = db.update_one('test',condition,dic)
        print(rep.raw_result)
        # 输出 {'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}

    8、删除

    删除和 update 类似,删除数据后,返回一个 DeleteResult 对象, raw_result 属性中包含 delete 的个数

    from pymongo import MongoClient
    
    class mongodb:
        def __init__(self,host,db,port = 27017):
            '''
            :param host: str mongodb地址
            :param db: str 数据库
            :param port: int 端口,默认为27017
            '''
            host = host
            db = db
            self.port = port
            client = MongoClient(host=host,port=port)
            self.db = client[db]
    
        def delete_one(self,table,dic):
            '''
            :param table: str 数据库中的集合
            :param dic: dict 查询条件
            :return: 返回DeleteResult对象
            '''
            collection = self.db[table]
            rep = collection.delete_one(dic)
    
            return rep
    
        def delete_many(self,table,dic):
            '''
            :param table: str 数据库中的集合
            :param dic: dict 查询条件
            :return: 返回DeleteResult对象
            '''
            collection = self.db[table]
            rep = collection.delete_many(dic)
    
            return rep
    
    
    if __name__=='__main__':
        dic = {'English':60}
        db = mongodb(host='localhost',db = 'test')
        rep = db.delete_many('test',dic)
        print(rep.raw_result)
        # 输出 {'n': 21, 'ok': 1.0}

    以上就是如何用python 操作MongoDB数据库的详细内容,更多关于python 操作MongoDB数据库的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • MongoDB安装使用并实现Python操作数据库
    • 使用python向MongoDB插入时间字段的操作
    • 用Python实现定时备份Mongodb数据并上传到FTP服务器
    • python连接mongodb数据库操作数据示例
    • python爬虫用mongodb的理由
    • python爬虫数据保存到mongoDB的实例方法
    • Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
    • Python操作Mongodb数据库的方法小结
    • Python 操作 MongoDB 讲解详细
    上一篇:Python Numpy之linspace用法说明
    下一篇:face_recognition库在python的安装
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    如何用python 操作MongoDB数据库 如,何用,python,操作,MongoDB,