MongoDB指南针:显示二进制类型3指南

rkttyhzu  于 2023-04-11  发布在  Go
关注(0)|答案(1)|浏览(158)

bounty已结束,回答此问题可获得+50声望奖励,奖励宽限期将在8小时后结束,Kiruahxh正在寻找可靠来源的答案:提供一种简单的方式来交互地使用这些uuid,或者一个迁移路径

我有一个python软件,它使用以下代码在mongo数据库中插入uuid:

class User(mongoengine.Document):
    id = mongoengine.UUIDField(primary_key=True, required=True, default=lambda: str(uuid.uuid4()))

在MongoDB Compass中,它显示为:

_id: Binary('ytSLGP47REmESqyzow9kAw==', 3)

"_id": {
    "$binary": "ytSLGP47REmESqyzow9kAw==",
    "$type": "3"
},

我可以在不修改数据库的情况下强制MongoDB Compass将这些字段显示为常规的uuid吗?

nimxete2

nimxete21#

我没有找到一种方法来解决这个问题使用mongoengine,但我会给予你一个方法来做,但不同的python库pymongo

PYMONGO溶液

使用这种方式将其记录为UUID对象,所以我认为它可以帮助您解决问题。
第一步:

  • 去找你的mongo客户
  • 让您的集合对象使用它

评论流很好地解释了这一点。

from pymongo import MongoClient
from bson.binary import UuidRepresentation
from uuid import uuid4

# use the 'standard' representation for cross-language compatibility.
client = MongoClient(uuidRepresentation='standard')
collection = client.get_database('database_name').get_collection('collection_name')

# create a native uuid object
uuid_obj = uuid4()

# save the native uuid object to MongoDB
collection.insert_one({'uuid': uuid_obj})

# To test if everything worked well and look up the results.

# retrieve the stored uuid object from MongoDB
document = collection.find_one({})

# check that the retrieved UUID matches the inserted UUID
assert document['uuid'] == uuid_obj

MONGODB中,必须向我们显示

{'_id': UUID('00112233-4455-6677-8899-aabbccddeeff')}

作为十六进制UUID,一个随机生成的uuid。
这就是我的解决方案,希望它能对你和社区有所帮助。
猫迷先生

相关问题