- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我使用 MongoDB 和 Flask-MongoEngine 作为我的 Web 应用程序的 ORM 组件。
我已经像这样构建了用户文档架构:
from ..core import db
class UserComics(db.EmbeddedDocument):
favorites = db.SortedListField(db.StringField(), default=None)
class UserSettings(db.EmbeddedDocument):
display_favs = db.BooleanField(default=False)
default_cal = db.StringField(default=None)
show_publishers = db.ListField(db.StringField(), default=None)
class UserTokens(db.EmbeddedDocument):
refresh_token = db.StringField(default=None)
access_token = db.StringField(default=None)
expire_time = db.StringField(default=None)
class User(db.Document, UserMixin):
# Save User document to this collection
meta = {'collection': 'users_test'}
userid = db.StringField()
full_name = db.StringField()
first_name = db.StringField()
last_name = db.StringField()
gender = db.StringField()
birthday = db.StringField()
email = db.EmailField()
friends = db.ListField(db.StringField())
date_creation = db.DateTimeField()
last_login = db.DateTimeField()
favorites = db.EmbeddedDocumentField(UserComics)
settings = db.EmbeddedDocumentField(UserSettings)
tokens = db.EmbeddedDocumentField(UserTokens)
但是,当像这样创建一个新用户时(我已经省略了行...):
def create_new_user(resp):
newUser = User()
....
newUser.settings.default_cal = resp['calendar']
....
newUser.save()
return
我遇到了这个错误:
AttributeError: 'NoneType' 对象没有属性 'default_cal'
在我看来,我没有正确使用 MongoEngines Embedded 文档,但我不知道哪里出错了。
任何帮助将不胜感激!
最佳答案
你只需要创建一个特定类的嵌入文档对象,然后将它与主文档类一起使用,如下所示:
new_user = User()
user_settings = UserSettings()
user_settings.default_cal = resp['calendar']
new_user.settings = user_settings
# more stuff
new_user.save()
注意:只为主文档创建新对象,不会自动创建相应的嵌入文档对象,但在读取数据时情况当然不同。
编辑:
正如 tbicr 在下面提到的,我们也可以这样做:
settings = db.EmbeddedDocumentField(UserSettings, default=UserSettings)
在声明字段时,这样我们就不需要像第一个示例中那样创建对象。
关于python - MongoEngine 的嵌入式文档问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17872836/
Mongoengine、flask-MongoEngine 和 Django-MongoEngine 项目之间有什么区别? 我在 Django 项目中使用 Mongoengine。如果我改用 Djan
如果我有这样的文档: class Page(Document): title = StringField(max_length=200, required=True) date_mod
我有以下类(class) class ParentDocument(Document): . . . class Child1Document(ParentDocument):
我一直对这个错误感到困惑。我正在使用 mongoengine 创建一个 Vehicle 数据库,就像这样。 class Vehicles(Document): make: StringFiel
我一直对这个错误感到困惑。我正在使用 mongoengine 创建一个 Vehicle 数据库,就像这样。 class Vehicles(Document): make: StringFiel
需要你的帮助。我尝试使用 mongoengine、flask、flask-login。 我的模型: class Post(db.Document): text = db.StringField(
django mongoengine和mongoengine有什么区别我可以使用 django 默认/内置形式 mongodb 最佳答案 Django-mongoengine 是一个提供与 Mongo
一个 mongoengine.DynamicEmbeddedDocument可用于利用 MongoDB 灵活的无模式设计。它是可扩展的,并且不对字段应用类型约束,afaik。 一个 mongoengi
无论我尝试什么,当尝试在 mongoengine 数据库上使用多处理时,我都会不断点击“MongoClient opened before fork”警告关于不 fork 事件的 mongo 连接。
我想使用mongoengine和flask定义两个文档,用户包含以下主题,主题包含发布用户。 我在user.py中定义User文档,在topic.py中定义Topic文档。仅在 topic.py 中我
我有一个使用 Flask+MongoEngine 创建的应用程序,并且有一个像这样的“用户文档”: class User(db.Document): username = db.StringF
我正在使用 mongoengine v0.15.0。如何获取连接到的数据库的名称?当然,我会在 uri 字符串中提供名称。但是,有没有办法查询 mongo 并找到它? 谢谢, 戒日 最佳答案 有关在
使用Mongoengine并尝试形成标签云。我想在每个项目上附加一个或多个标签。此处使用类似标签的类似内容(在每个问题下方)。 在这里搜索和阅读许多帖子之后,我仍然无法通过正确的方法将新条目添加到Li
我正在为我最新的 Web 应用程序使用 Flask/Mongoengine-MongoDB。 我熟悉 Pymongo,但我是对象文档映射器(如 Mongoengine)的新手。 我已经建立了一个数据库
我有一个动态文档模型,我要设置的字段之一称为“index_this” 我正在尝试使用点表示法设置此字段: In [17]: mongo_object.index_this = False In [18
我正在使用 mongodb 和 python。 同样使用MongoEngine与mongodb进行通信。 现在我做了一个简单的具有评论功能的看板系统。 [模型.py] import datetime
为了在 mongoengine 上进行涉及更新两种以上不同类型文档的事务,我该怎么做? 最佳答案 使用下面的方法,就可以使用mongoengine中的事务请注意,在此方法中,您的查询必须是使用 pym
我在一些 mongoengine 的文档中有一个所需权限的列表,我想对其进行过滤。 考虑这个文档: class Entry(Document): required_perms = ListFi
我有一个看起来像这样的模型: class TestDoc(Document): name = StringField() friends = ListField(StringField
我想将动态字段存储到文档中,但每个文档可以有不同的字段。 例如: Class SampleDoc(DynamicDocument): xyz = StringField() df = "fiel
我是一名优秀的程序员,十分优秀!