首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google App Engine:可以执行类似Gql的查询吗?

Google App Engine:可以执行类似Gql的查询吗?
EN

Stack Overflow用户
提问于 2008-09-06 20:05:24
回答 12查看 42.7K关注 0票数 124

真的很简单。在SQL中,如果我想在文本字段中搜索几个字符,我可以这样做:

代码语言:javascript
运行
复制
SELECT blah FROM blah WHERE blah LIKE '%text%'

App Engine的文档没有提到如何实现这一点,但这肯定是一个足够常见的问题?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2008-09-06 20:29:30

BigTable是App Engine的数据库后端,它将扩展到数百万条记录。因此,App Engine将不允许您执行任何会导致表扫描的查询,因为对于填充良好的表,性能将非常糟糕。

换句话说,每个查询都必须使用索引。这就是为什么你只能执行=><查询。(实际上,您也可以执行!=,但是该应用程序接口结合使用><查询来实现这一点。)这也是开发环境监视您执行的所有查询并自动将任何缺少的索引添加到index.yaml文件的原因。

没有办法为LIKE查询建立索引,因此它是不可用的。

看一看this Google IO session可以更好、更详细地解释这一点。

票数 82
EN

Stack Overflow用户

发布于 2009-07-08 08:09:57

我也面临着同样的问题,但我在谷歌应用程序引擎页面上发现了一些东西:

提示:查询筛选器没有明确的方法来匹配字符串值的一部分,但您可以使用不等式筛选器伪造前缀匹配:

代码语言:javascript
运行
复制
db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2",
            "abc",
            u"abc" + u"\ufffd")

这将匹配每个具有以字符abc开头的字符串属性prop的MyModel实体。unicode字符串u"\ufffd“表示可能的最大Unicode字符。当属性值在索引中排序时,落在此范围内的值是以给定前缀开头的所有值。

http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html

也许这能起到这个作用。)

票数 77
EN

Stack Overflow用户

发布于 2010-01-26 06:43:56

尽管App Engine不支持LIKE查询,但可以看看ListPropertyStringListProperty属性。当对这些属性进行相等性测试时,该测试实际上将应用于所有列表成员,例如,如果值出现在列表中的任何位置,则list_property = value测试。

有时,此功能可能被用作缺少LIKE查询的变通方法。例如,它使得做simple text search, as described on this post成为可能。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档