google-app-engine - Google App Engine Datastore (ndb) 中的多对多关系

标签 google-app-engine app-engine-ndb

我有两个模型:成员和事件。一个成员(member)可以参与多个事件,一个事件中有很多参与者。我是这样想的:

class Members(ndb.model):
    event = ndb.KeyProperty(repeated=True)

class Events(ndb.model):
    member = ndb.KeyProperty(repeated=True)

建立多对多关系的最佳方式是什么?

最佳答案

我认为在这种情况下,您希望在一个模型中有一个指向另一个模型的键数组/列表。由于数组/列表的长度有限制(现在最大值为 5000),您可能希望成员模型指向事件模型(我假设成员可能不会参加很多事件(超过5000),但有很多(超过 5000 名)成员参加事件)。现在,如果您想要与会者列表,只需在成员模型中查询事件键即可。如果您只需要人数,可以进行仅键查询,这样可以节省成本。

如果出于某种原因您需要让两种情况都超过 5000,那么您可以制作另一个包含成员键和事件键的(与会者)模型,然后为每个事件的每位 guest 制作此与会者模型。要获取客人列表,只需针对特定事件查询此模型,如果您需要成员的事件列表,则执行相反的操作。这并不比上面的工作多多少,所以即使 5000 不是限制因素,这也可能是您的首选方式。

关于google-app-engine - Google App Engine Datastore (ndb) 中的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13565189/

相关文章:

java - Google App Engine 是否有 HTML 模板引擎(Java 版本)?

python - 让 ndb.tasklet 在 Google App Engine 中工作很困难

javascript - ndb.key() -> 使用 Javascript 执行此操作

python - 需要帮助创建 GAE 数据存储加载器类?

google-app-engine - 为什么应用程序引擎忽略 app.yaml 中的 PORT 环境变量

android - 如何使用谷歌应用引擎存储文件并能够查看它?

python - 每个请求在 Appengine 中都会到达服务器两次

python - Google-app-engine NDB iter keys_only

python - 如何比较 NDB 查询中的多个日期?

google-app-engine - NDB 中反向引用属性的替代方案是什么?