Сохранить mongo_id в документе MongoAlchemy?
Можно ли хранить mongo_id как ObjectId
объект в поле MongoAlchemy? Я был в состоянии хранить ObjectId
внутри документа, который я определил вручную, но кажется, что я ограничен хранением строкового значения идентификатора в контексте MongoAlchemy ORM.
Вот часть моего кода:
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()
Вы увидите, что я могу хранить mongo_id как ObjectId
объект в Group
метод add_participant
(поскольку он создает документ вручную, а не через ORM MongoAlchemy), но вынужден преобразовать mongo_id в строку, чтобы сохранить его в db.StringField
,
Я пытался сохранить оригинал ObjectId
в db.AnythingField
, но не смог отфильтровать его.
Кто-нибудь знает, возможно ли сохранить ObjectId
в поле MongoAlchemy, а затем фильтровать по нему в запросе к базе данных?
Спасибо!
1 ответ
Вы хотите ObjectIdField: http://www.mongoalchemy.org/api/schema/fields.html
Это тип поля, которое используется для mongo_id (хотя это поле имеет специальный регистр)
Пытаться
id = db.ObjectIdField().gen()
Это автоматически сгенерирует идентификатор объекта для каждого экземпляра объекта / документа mongo db - как и id в реляционных базах данных