python操作mongodb

本文详细介绍了如何使用Python连接和管理MongoDB,包括连接器安装、数据库管理、文档的增删改查等操作,覆盖了从连接MongoDB到执行聚合统计的完整流程。
摘要由CSDN通过智能技术生成

一、连接器的安装和配置

  • python连接器:MongoDB官方提供的python工具包
  • 支持的版本:2.6~5.0
  • 安装:pip install pymongo

二、管理MongoDB

2.1、第一步,连接到MongoDB数据库系统

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

2.2、第二步,管理MongoDB数据库

  • 通过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)

2.3、第三步,管理MongoDB中的集合

  • 通过数据库对象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)

2.4、第四步,管理MongoDB中的文档


三、新增文档

pymongo在插入数据时可以将python的对象转换成BSON

两种场景和语法

  • insert_one():插入一个文档
  • insert_many():批量插入

3.1、新增一个文档

  • 调用方法:result = db.COLLECTION_NAME.insert_one(doc),doc是一个字典

  • 返回插入的文档ID:result.inserted_id

3.2、批量新增文档

  • 调用方法

    doc_list = [doc1, doc2]
    result = db.COLLECTION_NAME.insert_many(doc_list)
    
  • 返回插入的文档ID列表:result.inserted_ids

  • 返回插入的文档总数:len(result.inserted_ids)

示例

from datetime import datetime

from pymongo import MongoClient
from loguru import logger

from util.generate_data import GenerateData


class LearnMongoDB:

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

	def add_one(self):
		"""新增一个文档"""
		doc = {
   
			'username': self.gd.name(),
			'password': '123456',
			'address': self.gd.address(),
			'reg_date': datetime.now(),
			'company': {
   
				'name': '***科技公司',
				'phone': self.gd.phone()
			}
		}
		db = self.client.test
		result = db.users.insert_one(doc)
		logger.info(f'插入返回的结果id:{
     result.inserted_id}')

	def add_many(self, num: int = 5):
		"""
		新增多个文档
		:param num: 新增的数量
		:return:
		"""
		doc_list = []
		for _ in range(num):
			doc = {
   
				'username': self.gd.name(),
				'password': '123456',
				'address': self.gd.address(),
				'reg_date': datetime.now(),
				'comp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值