如何从字符串中获取mongodb的有效对象id?

2024-05-23 18:44:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想让我的mongodb进入一个领域:

class ZhinengStats(Document):
    zhineng_id = ObjectIdField(db_field="_id", primary_key=True, required=True, help_text="job id")

但有效的ObjectId必须是'str'类型的12字节输入或24个字符的十六进制字符串,因此如果我这样做:

ZhinengStats.objects(zhineng_id="programmer").first()

我会出错的。我觉得吃杂烩是个好办法:

hash("programmer") # 7354308922443094682

但正如你所见,杂凑似乎不好。

那么,如何获取有效的对象id?


更新:

主要的问题是因为这是一个中文字段,所以类似这样的:ObjectId('兼职'.decode("utf-8"))不能工作,所以我如何使它支持utf-8?


Tags: idtruefielddbmongodbdocument领域utf
2条回答

为什么必须从字符串生成ObjectId?如果您只是想要mongodb文档的唯一id,您可以像这样自动生成一个

from bson.objectid import ObjectId
_id = ObjectId()

生成的ObjectId将基于机器的硬件签名和当前时间

Python mongodb documentation已经为您准备好了示例:

class bson.objectid.ObjectId(oid=None)

Initialize a new ObjectId.

ObjectId(b'foo-bar-quux')
ObjectId('666f6f2d6261722d71757578')

相关问题 更多 >