小编A B*_* Ba的帖子

GQL查询的问题,Google Datastore.多个条件以及大于和小于运算符时出错

我正在尝试查询数据存储区,我的查询如下所示:

SELECT *
FROM mydb
WHERE Latitude = "18.1" AND Number > "1"
Run Code Online (Sandbox Code Playgroud)

它不起作用.我在数据存储区查询框中收到此错误:

GQL查询错误:您的数据存储区没有此查询所需的复合索引(开发人员提供).

运行我的代码时出现此错误:

找不到匹配的索引.推荐索引是:\n-种类:mydb \n属性:\n - 名称:位置\n - 名称:数字\n

像这样的简单请求工作:

SELECT *
FROM mydb
WHERE Number > "1" AND Number < "5"
Run Code Online (Sandbox Code Playgroud)

我这里只访问一个列可能这就是为什么?

不,

然后我尝试了这样的请求:

SELECT *
FROM mydb
WHERE Latitude = "18.1" AND Number = "1"
Run Code Online (Sandbox Code Playgroud)

这很有效.

我尝试查找解决方案,但我遇到了此页面:https://cloud.google.com/datastore/docs/tools/indexconfig#Datastore_About_index_yaml

经过那个页面后,我收集到了我需要一个index.yaml文件.它应该放在一个名为WEB-INF的文件夹中.但我没有这个文件夹.

这是我的代码的一小部分:

Query<Entity> query = Query
                .gqlQueryBuilder(Query.ResultType.ENTITY,
                        "SELECT * FROM " + kind + " WHERE Location = @location AND Number <= @number")
                .setBinding("number", "5").setBinding("location", …
Run Code Online (Sandbox Code Playgroud)

java google-app-engine gql google-cloud-datastore app-engine-flexible

6
推荐指数
1
解决办法
2127
查看次数

GQL禁止文字错误,谷歌数据存储

我正在尝试使用GQL从数据存储区中获取一些数据.

当我SELECT * FROM Kind提出请求时,它可以正常工作,我会收到数据.

但是,当我尝试:

SELECT * FROM kind where num < 1234
Run Code Online (Sandbox Code Playgroud)

我得到一个不允许的字面错误.

我甚至尝试用引号做到这一点:

SELECT * FROM kind where num < '1234'
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的错误.

有没有人遇到过这个?

这是代码:

Query<Entity> query = Query.gqlQueryBuilder(Query.ResultType.ENTITY,             
          "SELECT * FROM " + kind + " WHERE num < '100'"
          ).build();
  QueryResults<Entity> results = datastore.run(query);
  while (results.hasNext()) {
    Entity result = results.next();
   myList.add(result.getString("num"));
Run Code Online (Sandbox Code Playgroud)

java google-app-engine google-cloud-datastore gcloud-java

5
推荐指数
1
解决办法
605
查看次数

5
推荐指数
1
解决办法
171
查看次数

循环数据存储查询结果需要太长时间.有没有办法加快速度?

我正在查询看起来像这样的数据存储区:

Query<Entity> query = Query.gqlQueryBuilder(Query.ResultType.ENTITY,
                                    "SELECT * FROM " + kind
                                            + " WHERE Location = place").build();
results = datastore.run(query);
Run Code Online (Sandbox Code Playgroud)

结果存储在一个 QueryResults<Entity> results;

然后我遍历结果并提取我需要的数据.

这种类型有大约10000个实体,我将它们全部提取出来.

while (results.hasNext()) {

   Entity result = results.next(); 
   ....
}
Run Code Online (Sandbox Code Playgroud)

这需要10秒才能实现.有没有办法减少这个时间?我知道循环结果导致减速.

google-app-engine google-cloud-datastore

5
推荐指数
1
解决办法
361
查看次数

在Java中,Date类型可以只保存MM-dd-yyyy还是仅仅hh:mm:ss?

我将epoch格式时间转换为正常格式,但是当我将它转换为日期时,我得到了,MM-dd-yyyy hh:mm:ss.

如果我想单独列出我必须使用SimpleDateFormat的日期或时间.但是这会返回一个String.我想知道是否有办法使这个字符串成为Date类型.

java

2
推荐指数
1
解决办法
475
查看次数