如何用python 操作MongoDB数据库

目录
  • 一、前言
  • 二、操作 MongoDB
    • 1、安装 pymongo
    • 2、连接 MongoDB
    • 3、选择数据库
    • 4、选择集合
    • 5、插入数据
    • 6、查询
    • 7、更新数据
    • 8、删除

一、前言

  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)常规查询

  • find_one :查询单条记录,返回一个字典。
  • find:查询多条记录 ,返回一个游标对象。
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]}}

  • $lt :小于
  • $lte:小于等于
  • $gt:大于
  • $gte:大于等于
  • $ne:不等于
  • $in:在范围内
  • $nin:不在范围内

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 生效的个数。

  • update_one:更新查询到的第一条数据
  • update_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 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 的个数

  • delete_one:删除查询到的第一条数据
  • delete_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 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数据库的资料请关注我们其它相关文章!

(0)

相关推荐

  • python爬虫数据保存到mongoDB的实例方法

    爬虫数据保存到mongoDB的方法: import pymongo # 首先需要注意,mongodb数据库存储的类型是以键值对类型进行存储,所以在存储以前一定要进行数据筛选 def save_mongo(传入的数据): # 创建连接 因为使用的为本机数据库,所以IP写localhost即可,端口号为27017 client = pymongo.MongoClient('localhost',27017) # 连接数据库(这里注意一点,mongo数据库有一个优点,就是当自己连接的数据库和表都没有的

  • 基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)

    如果使用Python做大型海量数据批量任务时,并且backend用mongodb做数据储存时,常常面临大量读写数据库的情况.尤其是大量更新任务,由于不能批量操作,我们知道pymongo是同步任务机制,相当耗时. 如果采用多线程.多进程的方案确实有效,但编写麻烦.消耗系统资源大(pymongo还不允许fork线程中共用连接).这里主要瓶颈在于IO,使用单线程异步操作就会效果很好. Motor是一个异步mongodb driver,支持异步读写mongodb.它通常用在基于Tornado的异步web

  • Django集成MongoDB实现过程解析

    将Django与MongoDB集成 在不更改Django ORM的情况下,将MongoDB用作Django项目的后端数据库.使用Django Admin在MongoDB中添加和修改文档.通过仅添加一行代码,开始将Django与MongoDB结合使用. 1.pip安装djongo 2.设置setting文件 DATABASES = { 'default': { 'ENGINE': 'djongo', 'NAME': 'your-db-name', } } 需要注意的地方: 1.Python 3.6

  • 使用python向MongoDB插入时间字段的操作

    看代码吧~ import pymongo from dateutil import parser dateStr = "2019-05-14 01:11:11" myDatetime = parser.parse(dateStr) client = pymongo.MongoClient(host="127.0.0.1", port=27017) db = client["test"] db.ceshi.insert({"date&qu

  • 使用Djongo模块在Django中使用MongoDB数据库

    目录 一.安装与配置 二.定义模型 三.生成模型 四.访问Django Admin 五.操作数据 六.最后 一.安装与配置 Djongo的项目官方地址为:https://nesdis.github.io/djongo/,我们可以通过pip命令直接安装djongo: pip install djongo 在安装完成之后,我们就可以直接在Django中配置MongoDB数据库的信息了. 在正常情况下,我们的Django项目中数据库在settings.py文件中进行配置,其一般配置如下所示: DATA

  • python爬虫用mongodb的理由

    python爬虫用mongodb的原因: 1.文档结构的存储方式 简单讲就是可以直接存json,list 2.不要事先定义"表",随时可以创建 3."表"中的数据长度可以不一样 也就是第一条记录有10个值,第二条记录不要规定也要10个值 对爬虫这种很乱的数据来说,很适用 . 内容扩展: mongoDB介绍: 它的特点是高性能.易部署.易使用,存储数据非常方便.主要功能特性有: *面向集合存储,易存储对象类型的数据. *模式自由. *支持动态查询. *支持完全索引,包

  • 用Python实现定时备份Mongodb数据并上传到FTP服务器

    实现的功能:在win7下,每天晚上1点,自动将 F:/data中所有文件进行压缩,以[mongodb+日期]命名,将压缩好的文件存储在本地目录 F:\MongoDbData\,然后将这个压缩好的文件上传到ftp://192.168.0.101/MongoDBup/目录下 分三步: 第一步:搭建FTP服务器,配置好FTP环境. 第二步:用python编写压缩文件并实现FTP上传的脚本第三步:使用win7自带的任务计划程序定时执行python脚本 1. 环境 Python:3.6.1Python I

  • python连接mongodb数据库操作数据示例

    作者: wyh草样 出处:https://www.cnblogs.com/wyh0923/p/14047466.html 1.数据库配置类 MongoDBConn.py #encoding=utf-8 ''' Mongo Conn连接类 ''' import pymongo class DBConn: conn = None servers = "mongodb://localhost:27017" def connect(self): self.conn = pymongo.Conn

  • 如何用python 操作MongoDB数据库

    目录 一.前言 二.操作 MongoDB 1.安装 pymongo 2.连接 MongoDB 3.选择数据库 4.选择集合 5.插入数据 6.查询 7.更新数据 8.删除 一.前言 MongoDB属于 NoSQL(非关系型数据库),是一个基于分布式文件存储的开源数据库系统. 二.操作 MongoDB 1.安装 pymongo python 使用第三方库来连接操作 MongoDB,所以我们首先安装此库. pip3 install pymongodb 2.连接 MongoDB 使用 MongoCli

  • Python操作MongoDB数据库的方法示例

    本文实例讲述了Python操作MongoDB数据库的方法.分享给大家供大家参考,具体如下: >>> import pymongo >>> client=pymongo.MongoClient ('localhost',27017) >>> db=client.students >>> db.collection_names() ['students'] >>> students=db.students >>

  • Python操作Mongodb数据库的方法小结

    本文实例讲述了Python操作Mongodb数据库的方法.分享给大家供大家参考,具体如下: 一 导入 pymongo from pymongo import MongoClient 二 连接服务器 端口号 27017 连接MongoDB 连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入MongoDB的IP及端口即可,第一个参数为地址host,第二个参数为端口port,端口如果不传默认是27017. conn = MongoClient("localhost

  • Python操作mongodb数据库的方法详解

    本文实例讲述了Python操作mongodb数据库的方法.分享给大家供大家参考,具体如下: 安装pymongo 下载pymongo: https://pypi.python.org/packages/82/26/f45f95841de5164c48e2e03aff7f0702e22cef2336238d212d8f93e91ea8/pymongo-3.4.0.tar.gz#md5=aa77f88e51e281c9f328cea701bb6f3e 安装pymongo: 解压后,cmd进入pymon

  • Python操作mongodb数据库进行模糊查询操作示例

    本文实例讲述了Python操作mongodb数据库进行模糊查询操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pymongo import re from pymongo import MongoClient #创建连接 #10.20.66.106 client = MongoClient('10.20.4.79', 27017) #client = MongoClient('10.20.66.106', 27017) db_name = '

  • 利用Python操作MongoDB数据库的详细指南

    目录 前言 1 连接数据库 1.1 安装PyMongo 1.2 连接数据库 1.3 连接库与集合 2 MongoDB命令在Python中的对应方法 3 插入数据到MongoDB 基本语法 被插入的数据格式 说明 举例 4 从MongoDB中查询数据 查询一条数据 查询集合中所有数据 逻辑查询 查询并对结果进行计数 查询并对结果进行计数 对字段去重 5 更新/删除MongoDB中的数据 基本语法 被更新的数据 举例 6 MongoDB与Python不通用的操作 6.1 空值 6.2 布尔值 6.3

  • python 操作 mongodb 数据库详情

    目录 一.安装 二.连接数据库 三.创建数据库 四.所有数据库 五.创建集合 六.插入数据 七.查询数据 八.高级查询 九.count统计 十.修改数据 十一.删除数据 十二.数据排序 一.安装 pip install pymongo 二.连接数据库 import pymongo # 方式一 client = pymongo.MongoClient('mongodb://localhost:27017') # 方式二 client = pymongo.MongoClient('localhost

  • Python操作MongoDb数据库流程详解

    1.简介 MongoDB是一个基于分布式文件存储的文档数据库,可以说是非关系型(NoSQL,Not Only SQL)数据库中比较像关系型数据库的一个,具有免费.操作简单.面向文档.自动分片.可扩展性强.查询功能强大等特点,对大数据处理支持较好,旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB文档类似于JSON对象.字段值可以包含其他文档,数组及文档数组. 2.应用 MongoDB数据库可以到网

  • Python操作MongoDB数据库PyMongo库使用方法

    引用PyMongo 复制代码 代码如下: >>> import pymongo 创建连接Connection 复制代码 代码如下: >>> import pymongo >>> conn = pymongo.Connection('localhost',27017) 或 复制代码 代码如下: >>> from pymongo import Connection >>> conn = Connection('local

  • Python使用pymongo库操作MongoDB数据库的方法实例

    python操作mongodb数据库 # !/usr/bin/env python # -*- coding:utf-8 -*- """ 使用pymongo库操作MongoDB数据库 """ import pymongo # 1.连接数据库服务器,获取客户端对象 mongo_client=pymongo.MongoClient('localhost',27017) # 2.获取数据库对象 db=mongo_client.myDB # db=mon

随机推荐