2024-06-08 12:53:04 发布
网友
如果数据存储中的字符串列表具有以下值:
a、b、c
如何将它与列表进行比较,以便只有当字符串列表中的每个值都存在于列表中时它才会返回true?在
['a','b']将返回false
['a','b','c']将返回true
['a'、'b'、'c'、'd'、'e']将返回true
单独使用GQL是可能的还是我需要拉出字符串列表并在其上循环?在
您可以以排序的方式将列表序列化为单个StringProperty。根据StringListProperty的内容,这可能与逗号分隔的值一样微不足道。在
您可以选择使用md5校验和之类的方法来减少存储和筛选的字符串的长度。在
来自the documentation:
A query cannot compare two list values. There is no way to test two lists for equality without testing each element for membership separately.
所以我想你的比较也不可能直接比较。在
使用集合进行比较可能更有效,而不是在列表上循环。在
这是不可能的。您可以使用多个相等筛选器,并且查询将只匹配列表中至少包含这些项的实体(例如,“WHERE foo='a'and foo='b'”仅在foo是至少包含“a”和“b”)的列表时匹配。如果不使用不等过滤器或排序顺序来执行此操作,数据存储将使用内置的merge join策略来满足您的查询。在
然而,反规范化将提供更稳健的解决方案。例如,如果将列表序列化为单个字符串,则可以简单地检查与该字符串是否相等。在
您可以以排序的方式将列表序列化为单个StringProperty。根据StringListProperty的内容,这可能与逗号分隔的值一样微不足道。在
您可以选择使用md5校验和之类的方法来减少存储和筛选的字符串的长度。在
来自the documentation:
所以我想你的比较也不可能直接比较。在
使用集合进行比较可能更有效,而不是在列表上循环。在
这是不可能的。您可以使用多个相等筛选器,并且查询将只匹配列表中至少包含这些项的实体(例如,“WHERE foo='a'and foo='b'”仅在foo是至少包含“a”和“b”)的列表时匹配。如果不使用不等过滤器或排序顺序来执行此操作,数据存储将使用内置的merge join策略来满足您的查询。在
然而,反规范化将提供更稳健的解决方案。例如,如果将列表序列化为单个字符串,则可以简单地检查与该字符串是否相等。在
相关问题 更多 >
编程相关推荐