一尘不染

在Google App Engine数据存储区中搜索以前缀开头的字符串

go

我想搜索名称以特定字符串开头的所有实体,这在数据存储区中可能吗?

我已经试过了:

q = datastore.NewQuery("Places").Filter("Name > ", "a")

但这是行不通的。

如果这不可能,您可以向我建议什么替代解决方案?BigQuery?BigTable或App Engine上的其他服务?


阅读 242

收藏
2020-07-02

共1个答案

一尘不染

这是可能的,但要结合使用两个不等式过滤器。

假设您要列出Places具有"li"前缀的列表。这可以用查询来描述,该查询列出按字典顺序列出Places的大于(或等于)"li"
小于前缀的下一个前缀。"li"``"lj"

这就是GQL的样子:

SELECT * FROM Places WHERE Name > 'li' AND Name < 'lj'

Go中的代码如下所示:

q = datastore.NewQuery("Places").Filter("Name >", "li").Filter("Name <", "lj")

这将列出Places名称的位置,例如:

liam
lisotto
lizst

但将排除以下名称:

abc
ljoi
lj
qwerty

需要注意的一件事:小写字母和大写字母在字典顺序上是不同的,因此例如"List"小于"li"(即使"list"大于"li")!

2020-07-02