python - mongoengine双向引用如何?

标签 python mongodb reference mongoengine bidirectional

给定以下代码:

from mongoengine import *

connect('spike_bidirectional')

class User(Document):
    name = StringField()
    page = ListField(ReferenceField('Page'))

class Page(Document):
    content = StringField()
    user = ReferenceField(User)

u = User(name="Test User").save()
p = Page(content="Page 1", user=u).save()
p2 = Page(content="Page 2", user=u).save()

u.reload()
p.reload()
x = u.pages

x 始终为空。数据库本身看起来很不错。有没有办法直接从用户访问与用户对象相关的所有页面?

如果双向连接是可能的,我想知道在数据模型中定义拥有和引用站点的规则是什么。属性名称本身是否相关?

最佳答案

您使用的是哪个版本的 Mongoengine?我相信 0.8 及更高版本不会取消引用,除非您明确告诉它。

创建一个测试数据库并尝试对您的模型进行以下更改。

page = ListField(ReferenceField(Page, dbref=True))

user = ReferenceField(User, dbref=True)

我没有测试过,首先我会检查并确定所使用的 Mongoengine 版本。

关于python - mongoengine双向引用如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28895778/

相关文章:

python - 如何找到失败的 python 导入路径?

python - 访问模型字段内的模型实例

python - 通过从文本文件中读取数据自动加载 SQL 表

c# - 如何更新 MongoDB 文档中的 <byte, string> 字典

.net - 有谁知道为什么标准框架引用上可能会出现 "manifest definition does not match the assembly reference"错误?

python - 是否可以在 lambda 函数中包含多个方程

mongodb - 仅投影子文档中数组项的部分字段

javascript - MongoDb:forEach 内存力好吗?

C++ 引用类型推荐用法

javascript - 如何阻止我的函数返回 "Reference error: (...) is not defined"