您可以使用数据存储区一次搜索多个字段吗?

时间:2011-04-22 03:55:54

标签: google-app-engine google-cloud-datastore

在我的应用程序中,我想为GAE设计,我想说,我们应该说一个全向搜索栏。

据我了解数据存储如何存储记录,它基本上是一个哈希映射的哈希映射。所以我有一个键,然后看起来(为了概念简单)一个字符串,它将是一个值的JSON返回。

在关系数据库世界中,如果我想同时搜索名字和姓氏,我将不得不有类似的东西

select * from user where user.firstname like 'bob' or user.lastname like 'bob'

使用数据存储区,我可以执行类似

的操作
select from user where user.anyfield like 'bob'

它将搜索用户实体的所有字段,自动返回user.firstname和/或user.lastname就像'bob'的任何记录?

2 个答案:

答案 0 :(得分:2)

App Engine不支持OR,但正如Nick建议here,您可以通过查询firstnames和另一个查询姓氏并合并结果来完成相同的操作。

您也无法直接进行LIKE比较,但您可以执行“开始时”查询,如here所示。

答案 1 :(得分:0)

有一种解决方案可以满足您的需求。它使用列表属性和关系索引实体。

使用Objectify的实现示例,您可以在我的博客here中找到。要了解有关关系索引实体的详情,请参阅此Google IO track