我在MongoDB中存储了以下示例键值对(以及许多类似的对):
"Cl\uff0eG_bibcode": 'some value'
之所以这样存储,是因为MongoDB不接受密钥名中的点。到目前为止,使用unicode版本的dot没有问题,但是我已经开始使用pymongo从我的数据库中拉入数据,它似乎正在从uff0e中转义。因此,当我在代码中看到它时,它是这样出现的:
^{pr2}$我注意到,如果\uff0e在值中,只有在键中,它才会执行此操作。我也不会在Mongo和我的代码之间操作数据。我要做的就是:
url = 'mongodb://user:passwd@host/database'
client = MongoClient(url)
db = client.get_default_database()
collection = db['my_collection']
results = collection.find().limit(1) #just grabbing any record to test
我想了解一下如何让pymongo停止在密钥名中转义unicode字符。我真的不想把我所有的结果都看一遍然后手工处理掉。在
假设您在这里使用的是python 2.x,请使用unicode键:
插入过程中,您使用的上一个驱动程序可能正在转义。在我的mongoshell中完成后,下面显示没有编码。在
这样就可以从shell中显示出您的结果。在
^{pr2}$你直接通过shell插入数据了吗?在
Btw点在密钥名中被接受,但它们被解释为dot notation,因此被视为子文档。例如,“user.\u id”的密钥将被解释为
the _id key inside the object (value) associated with the user key
两个建议。 a) 为什么不使用管道|或其他一些简单但不可信的令牌(不太可能在任何普通密钥中使用)令牌。b) 我建议破解BSON文件,为你的时髦钥匙内置一个编码器/解码器。可能在这个文件里。https://github.com/mongodb/mongo-python-driver/blob/master/bson/init.py
相关问题 更多 >
编程相关推荐