【问题标题】:NDB query by keys valueNDB 按键值查询
【发布时间】:2014-10-08 15:36:22
【问题描述】:

使用 Python NDB 的新手。

我有类似的东西:

class User(ndb.Model):
    seen_list = nbd.KeyProperty(kind=Survey, repeated=True)

class Survey(ndb.Model):
    same = ndb.StringProperty(required=True)

我希望能够查询没有看过某些调查的用户。

我现在做的是:

users = User.query(seen_list != 'survey name').fetch()

这不起作用。这样做的正确方法是什么?我应该先查询调查列表以获取具有特定名称的调查键吗? != 部分是否正确?

我找不到任何类似的例子。

谢谢。

【问题讨论】:

    标签: python google-app-engine python-2.7 flask google-cloud-datastore


    【解决方案1】:

    很遗憾,如果您的调查是重复属性,则不会这样。当您查询重复的属性时,数据存储会尝试列表中的每个条目,如果有一个有效,它将返回该项目。因此,当您说“!= 调查名称 1”时,如果您的列表中至少有一个条目不是“调查名称 1”,即使另一个结果是“调查名称 1”,它也会返回为正数.

    如果您来自我所知道的 SQL 背景,这是本能的。解决此问题的唯一方法是以编程方式评估您的查询返回的内容。它来自这样一个事实,即对于重复值,Big Table 会“压平”您的结果,这意味着它会为您的重复属性中的每个值创建一个条目。因此,当它扫描时,它最终会在您的信息中找到一个“正确”行,从那里获取对象键,然后返回对象。

    【讨论】:

      猜你喜欢
      • 2017-01-20
      • 2013-06-16
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多