【发布时间】:2019-11-28 10:47:56
【问题描述】:
在我们的 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;
}
作为示例,我们想要实现的目标:
- 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
我认为我们需要的是一个包含查询,其中包含 or 语句(如果可能的话),或者一个 in 查询。但我不知道我们如何使用 Google Cloud Datastore API 来实现它。
谢谢
【问题讨论】:
标签: java google-cloud-datastore datastore