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

时间:2013-01-17 19:24:04

标签: 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那里没有运气。

1 个答案:

答案 0 :(得分:4)

不确定你是否仍然需要这个(或者你为什么要从二进制转换为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)
}