python连接MongoDB,以及常用操作

python连接MongoDB

MongoDB: 多用于文档数据库存非结构化数据,NoSQL非关系型数据库。
python连接mongo

config

MONGODB:
    USER: $MONGODB_USER
    PASSWORD: $MONGODB_PW
    HOST: host
    PORT: 27017
    QUERY_STRING: 'replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'
    SUFFIX: 'Dev'

MongoClient

from pymongo import MongoClient

try:
    # Python 3.x
    from urllib.parse import quote_plus
except ImportError:
    # Python 2.x
    from urllib import quote_plus

mongo_uri = "mongodb://{USER}:{PASSWORD}@{HOST}:{PORT}/xxx?{QUERY_STRING}".format(
    USER=quote_plus(mongo_conf['USER']),
    PASSWORD=quote_plus(mongo_conf['PASSWORD']),
    HOST=mongo_conf['HOST'],
    PORT=mongo_conf['PORT'],
    QUERY_STRING=quote_plus(mongo_conf['QUERY_STRING'])
)

def auth_user(client: MongoClient):
    # 先连接系统默认数据库admin
    db = client.admin
    db.authenticate(mongo_conf['USER'], mongo_conf['PASSWORD'], mechanism='SCRAM-SHA-1')


# 获取client
client = MongoClient(mongo_uri, ssl=True, ssl_ca_certs='rds-combined-ca-bundle.pem')

# get db
MongoTest = client['HistoryWebTool' + mongo_conf['SUFFIX']]
常用操作
from pymongo.collection import Collection

mongo_collection: Collection = MongoTest.表名

# upsert 存在则更新,不存在则insert
filter_dict = {"object_id": object_id}
update_dict = {"$set": {"data": data,
                        "success": success,
                        "create_date": get_current_time_utc()}}
mongo_collection.update_one(filter_dict, update_dict, upsert=True)

# 查
doc = mongo_collection.find_one({"$query": {'file_id': object_id},
                           		"$orderby": {"create_date": -1}})

# 存在的不动, 不存在的插入
start_time_filter_dict = {"object_id": object_id}
    start_time_update_dict = {
        "$setOnInsert": {"create_date": get_current_time_utc(),
                         "user_id": user_id}
    }
mongo_collection.update_one(start_time_filter_dict, start_time_update_dict, upsert=True)
索引
mongo_collection.create_index(
    [("file_id", pymongo.DESCENDING)], background=True
)

更做操作,详见 https://www.runoob.com/mongodb/mongodb-tutorial.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuhengshi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值