我想搜索名称以特定字符串开头的所有实体,这在数据存储区中可能吗?
我已经试过了:
q = datastore.NewQuery("Places").Filter("Name > ", "a")
但这是行不通的。
如果这不可能,您可以向我建议什么替代解决方案?BigQuery?BigTable或App Engine上的其他服务?
这是可能的,但要结合使用两个不等式过滤器。
假设您要列出Places具有"li"前缀的列表。这可以用查询来描述,该查询列出按字典顺序列出Places的大于(或等于)"li" 且 小于前缀的下一个前缀。"li"``"lj"
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")!
"List"
"list"