tol*_*rdi 5 java datastore google-cloud-datastore
在我们的Google Cloud Datastore中,我们有一个属性(companies属性),该属性存储字符串列表,并且在查询数据存储区时,我们希望将Java列表发送到数据存储区API并获取公司属性至少包含以下内容之一的数据:列表中的项目。我们当前的查询代码在下面,但是我们无法找到如何在此代码上设置列表过滤器。有人对此有想法吗?
public List<MAExchangeNews> getExchangeNews(IExchangeController controller,int count, String offsetVal, List<String> relatedCompanySymbols) {
List<MAExchangeNews> result = null;
if (controller != null) {
EntityQuery.Builder builder = Query.newEntityQueryBuilder();
builder.setKind(KIND_NAME);
builder.setLimit(count);
builder.setOrderBy(OrderBy.desc(FIELD_NEWS_TIME));
if (offsetVal != null) {
builder.setStartCursor(Cursor.fromUrlSafe(offsetVal));
}
if (relatedCompanySymbols != null) {
//This is the area we want to add our filtering code //builder.setFilter(PropertyFilter.Operator.GREATER_THAN_OR_EQUAL_VALUE);
}
Query<Entity> query = builder.build();
QueryResults<Entity> resultList = datastore.run(query);
result = entitiesToNews(controller,resultList);
if (result != null) {
this.nextOffset = resultList.getCursorAfter().toUrlSafe();
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
我们想要实现的示例:
- Our DataStore Entities Company Properties :
1. FROTO, KCHOL
2. KCHOL, ALBRK
3. AKBNK, GARAN
4. ALBRK, ACSEL
- Our query List
1. {KCHOL,GARAN}
- Expected Result:
1. FROTO, KCHOL
2. KCHOL, ALBRK
3. AKBNK, GARAN
Run Code Online (Sandbox Code Playgroud)
我认为我们需要的是一个包含或语句(如果可能)的包含查询,或一个in查询。但是我不知道如何使用Google Cloud Datastore API来实现它。
谢谢
我对java不熟悉。但与 Google Cloud Datastore 的关系不大。Google Cloud Datastore 有五种类型的过滤器(=、<、<=、>、>=),因此您只能使用过滤器中的一种。
为了获得 1.{KCHOL,GARAN} 的结果,您可以尝试使用两个查询,第一个查询查找 KCHOl 的数据,第二个查询查找 GARAN 的数据并将其合并。
Google Cloud Datastore 中没有任何类似的包含 In 的内容。也许本指南有助于找到您的解决方案。
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |