You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python脚本(PyMongo)中实现mongosh的Binary.createFromBase64?

在PyMongo中实现mongosh的Binary.createFromBase64功能

问题描述

你在mongosh中使用以下语句查询:

db.my_collection.find( { my_field: Binary.createFromBase64('k4FyS0OWT6ujgLUAZKnsLw==', 3) } )

需要在Python脚本中通过PyMongo实现对应的Binary.createFromBase64功能。

解决方案

在PyMongo中,你需要结合base64模块解码字符串,再通过bson.binary.Binary类创建指定子类型的二进制对象,步骤如下:

  1. 导入依赖模块:需要导入PyMongo客户端、bson.binary.Binary以及Python标准库的base64。
  2. 解码Base64字符串:将目标Base64字符串解码为字节对象。
  3. 创建指定子类型的Binary对象:用解码后的字节和子类型(对应mongosh中的第二个参数3)实例化Binary类。
  4. 执行查询:用创建好的Binary对象构造查询条件,调用find方法执行查询。

完整代码示例

from pymongo import MongoClient
from bson.binary import Binary
import base64

# 连接MongoDB实例
client = MongoClient('mongodb://localhost:27017/')
# 指定数据库和集合
db = client['你的数据库名']
collection = db['my_collection']

# 处理Base64字符串并生成Binary对象
target_base64 = 'k4FyS0OWT6ujgLUAZKnsLw=='
decoded_bytes = base64.b64decode(target_base64)
# 子类型3对应mongosh中Binary.createFromBase64的第二个参数
binary_obj = Binary(decoded_bytes, subtype=3)

# 执行查询并遍历结果
for document in collection.find({'my_field': binary_obj}):
    print(document)

说明

  • mongosh中的Binary.createFromBase64(base64Str, subtype)本质是先解码Base64为二进制数据,再标记其MongoDB二进制子类型;PyMongo中需要拆分这两步操作。
  • 子类型参数必须明确指定为3,因为PyMongo的Binary类默认子类型是0,不匹配会导致查询不到数据。

内容的提问来源于stack exchange,提问作者dada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:30:59