问题描述
我目前正在使用 mongoengine 创建一个需要我使用对象列表的 python 脚本。
class Clients(DynamicDocument):
first_name = StringField()
last_name = StringField()
address = StringField()
phone_number = StringField()
email = StringField()
password = StringField()
vehicles = ListField(ReferenceField(Vehicles))
deleted = BooleanField()
appointments = ListField(ObjectIdField())
我知道使用 MongoDB 生成 ListField(ReferenceField())
将采用 DBRef
形式。但是,我的目的是获取手动参考,以便我可以获取 Vehicles
的 ObjectId。换句话说,我希望数据库看起来像 this 而不是 this。有办法吗???
解决方法
据我所知,您希望将引用存储为 ObjectId,而不是 DBRef。 MongoEngine 默认存储 ObjectId,而不是 ReferenceField,但这实际上是可定制的(参见 ReferenceField 上的 dbref arg)
ListField(ReferenceField(Vehicles,dbref=False)) # will store [ObjectId] (the default)
对比
ListField(ReferenceField(Vehicles,dbref=True)) # will store [DBRef]