【问题标题】:objectify v6 - NOT and IN filters no longer supported? Alternatives?objectify v6 - 不再支持 NOT 和 IN 过滤器?备择方案?
【发布时间】:2019-05-27 18:14:15
【问题描述】:

objectify v6 文档说:

新 SDK 不支持 NOT 和 IN 过滤器。你会得到一个 如果您尝试运行时错误 ofy().load().type(Thing.class).filter("field !=", value) 或 过滤器(“字段输入”值)。

即使在 objectify v5 中,我们是否应该避免使用 NOT 或 IN 过滤器,因为它们看起来像,即将淘汰?

是否有更多信息说明为什么不再支持这些?任何替代方法可以实现类似类型的查询?具体来说,IN 查询。如果您说出需要查询所有内容的用户 ID 列表,这/非常有用。

【问题讨论】:

    标签: google-cloud-platform google-cloud-datastore objectify


    【解决方案1】:

    无论如何,这些只是便利过滤器,它们被翻译成其他过滤器的组合。

    !=(不等于)和 IN(成员资格)操作由 使用 OR 操作组合其他过滤器。其中第一个,

    https://cloud.google.com/appengine/docs/standard/python/ndb/queries#neq_and_in

    property != value 实现为(property < value) OR (property > value)

    property IN [value1, value2, ...] 实现为(property == value1) OR (property == value2) OR ...

    因此,您可以将所有 !=IN 过滤器转换为该过滤器

    【讨论】:

    • (property == value1) OR (property == value2) OR ... 随着被搜索值数量的增加,性能如何?有什么想法吗?
    • 我没有亲自测试过,但我想性能会开始下降。它肯定需要做更多的工作:stackoverflow.com/questions/23323886/… 我会考虑重新格式化您的数据以更好地支持您尝试执行的查询。就像使用计算属性将记录分组到更大的类别桶中
    猜你喜欢
    • 1970-01-01
    • 2021-02-10
    • 2015-11-03
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2011-04-14
    • 2015-04-11
    • 2015-12-28
    相关资源
    最近更新 更多