Mongoengine:使用 ListField() 手动参考

问题描述

我目前正在使用 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]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...