是否可以将mongo_id存储为MongoAlchemy字段中的ObjectId
对象?我已经能够在我手动定义的文档中存储ObjectId
,但似乎我只能在MongoAlchemy ORM的上下文中存储id的字符串值。
以下是我的一些代码:
class Group(db.Document):
name = db.StringField()
trial_id = db.StringField(required=False)
participants = db.ListField(
db.DictField(db.AnythingField()), default_empty=True, required=False)
def add_participant(self, participant):
self.participants.append({
'participant_id': participant.mongo_id,
'start': datetime.utcnow(),
})
class Trial(db.Document):
name = db.StringField()
groups = db.ListField(
db.DocumentField(Group), default_empty=True, required=False)
def add_group(self, group):
group.trial_id = str(self.mongo_id)
group.save()
def get_group(self, group):
return Group.query.filter(
{'name': group, 'trial_id': str(self.mongo_id)}).first()
您会看到我能够在ObjectId
方法Group
中将mongo_id存储为add_participant
对象(因为它是手动创建文档,而不是通过MongoAlchemy ORM创建) ,但我被迫将mongo_id转换为字符串,以便将其存储在db.StringField
中。
我尝试将原始ObjectId
存储在db.AnythingField
中,但之后无法通过它进行过滤。
是否有人知道是否可以在MongoAlchemy字段中存储ObjectId
,然后在数据库查询中对其进行过滤?
谢谢!
答案 0 :(得分:1)
你想要一个ObjectIdField:http://www.mongoalchemy.org/api/schema/fields.html#mongoalchemy.fields.ObjectIdField
这是用于mongo_id的字段类型(虽然那个是特殊的)
答案 1 :(得分:0)
尝试
my_field
这将自动为mongo数据库对象/文档的每个实例生成对象ID-与关系数据库中的ID一样