Python & MongoDB - 如何通过 BinData 类型查找

标签 python mongodb pymongo bson

我是 MongoDB 的新手。无论如何,我正在尝试保存一些加密和 base64 编码的数据。

data = b64encode(self.iv + AES.new(self.key, self.mode, self.iv).encrypt(self.pad2(self.data)))
self.db.users.insert({'data':data})
self.db.users.find({'data':data})

插入工作正常,但查找数据返回 0 个结果。 MongoDB shell 输出如下:

db.users.find()
{ "_id" : ObjectId("50f848dc34257b0d5e3d9b29"), "data" : BinData(0,"R1VhaHl3MGpLSStkY0lWU255ZjhneGp2RWk3cEk3MnFRTCsxOTcyOC82WT0=")}

我现在如何通过 BinData 文件类型找到我的文档?我试过 bson.binary.Binary 没有运气。

最佳答案

不确定您是否仍然需要它(或者为什么要从二进制转换为 base64 再转换为二进制),但我希望这对您有所帮助:

import base64
import pymongo
from pymongo import binary
# if pymongo version >= 1.9, use the following instead
# from bson import binary

con = pymongo.Connection()
b64 = base64.b64encode("ajskldfjaklsdjfklasdjf")
bi = binary.Binary(b64)
con.test.test.insert({'foo': bi})
con.test.test.find_one({'foo': bi})

输出:

{
    u'_id': ObjectId('50f99b4a9f956a1924000000'),
    u'foo': Binary('YWpza2xkZmpha2xzZGpma2xhc2RqZg==', 0)
}

关于Python & MongoDB - 如何通过 BinData 类型查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14386535/

相关文章:

python - 从 python 和 launchd 启动 osascript

python - 如何连接向量以在循环中创建数组?

javascript - 如何在AngularJS中的多个表单 View 之间传递数据

node.js - 为什么文档没有从 mongodb 数据库中删除?

mongodb - 在 Mongoose 中存储时间的最佳方式

python - Flask:尝试解析 POST 负载时出现 Unicode 错误

python - def 函数不合适?

python - 展平mongodb字符串数组的根级别?

python - MongoDB 聚合最近记录并将某些字段匹配到最近 30 天

python - (PyMongo) - 函数 find_one_and_update() 的参数