Pymongo库使用

随手记录一些使用过程中的基本操作,读者需要对mongodb的mongoshell指令有一定基础

下文代码中所有querydb_namecollection_name需替换为实际情况

连接数据库

from pymongo.mongo_client import MongoClient
from pymongo.server_api import ServerApi

uri = "mongodb://username:password@host:port"
client = MongoClient(uri, server_api = ServerApi('1'))

查询指定集合中文档除_id字段外的所有字段

client['db_name']['collection_name'].find({query}, {'_id': False})

文档中插入时间

import datetime

date = datetime.datetime.now()
client['db_name']['collection_name'].update({query}, {'$set': {"date": date}})

查询类型为时间的字段

假设字段名称为date,起始时间为startTime,结束时间为endTime,都是datetime类型

client['db_name']['collection_name'].find({'date': {'$gte': startTime, '$lte': endTime}})

查询类型为数组的字段

假设字段名称为arr,需要查询的元素为ele1以及ele2

如果二者为“或”的关系,即查询所有包含ele1或者ele2的文档,用$in运算符

client['db_name']['collection_name'].find({'arr': {'$in': [ele1, ele2]}})

如果二者为“且”的关系,即查询所有包含ele1以及ele2的文档,用$all运算符

client['db_name']['collection_name'].find({'arr': {'$all': [ele1, ele2]}})

upsert的使用

upsert即update + insert,顾名思义,根据查询条件,如果该文档存在则更新,不存在则创建,非常适用于一些爬虫的数据库。updateupdate_one方法的第3个参数即为upsert,默认为False

client['db_name']['collection_name'].update_one({query}, {'$set': {}}, True)

find_and_delete的使用

find_and_delete以及find_one_and_delete在查询后会删除查询到的文档,并返回这些文档,适用于一些一次性数据,如果没有查询到,则返回None,基本用法和find一致

results = client['db_name']['collection_name'].find_and_delete({query})
if results:
  pass # Do something
else:
  pass # Do something

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

Index