在我的应用程序中,我使用PyMSSQL从MSSQL获取了一些值。 Python将其中一个值解释为UUID。我将此值分配给名为id的变量。当我做的时候
print (type(id),id)
我得到了
<class 'uuid.UUID'> cc26ce03-b6cb-4a90-9d0b-395c313fc968
到目前为止,一切都如预期的那样。现在,我需要使用此id在MongoDb中进行查询。但我在MongoDb中的字段类型是“.NET UUID(Legacy)”,它是NUUID。但是当我用
查询时,我没有得到任何结果client.db.collectionname.find_one({"_id" : id})
这是因为我需要将UUID转换为NUUID。
注意:我也试过
client.db.collectionname.find_one({"_id" : NUUID("cc26ce03-b6cb-4a90-9d0b-395c313fc968")})
但它没有用。有什么想法吗?
答案 0 :(得分:2)
假设您正在使用PyMongo 3.x:
from bson.binary import CSHARP_LEGACY
from bson.codec_options import CodecOptions
options = CodecOptions(uuid_representation=CSHARP_LEGACY)
coll = client.db.get_collection('collectionname', options)
coll.find_one({"_id": id})
如果您使用的是PyMongo 2.x
from bson.binary import CSHARP_LEGACY
coll = client.db.collectionname
coll.uuid_subtype = CSHARP_LEGACY
coll.find_one({"_id": id})
你必须告诉PyMongo最初存储UUID的格式。还有一个JAVA_LEGACY表示。