Objectify按列表元素查询

时间:2016-06-30 09:14:15

标签: google-app-engine objectify google-cloud-datastore

我正在使用Objectify来创建一个实体:

@Entity
public class Collection {

    @Id
    private String name;
    @Index
    private List<Long> viewersIds;

//other fields
}

现在我正在尝试检索具有特定viewerId的集合列表,让我们说1.我试过了:

List<Collection> usersCollections = ofy().load().type(Collection.class).filter("viewersIds",1).list();

ofy().load().type(Collection.class).filter("viewersIds =",1).list();

ofy().load().type(Collection.class).filter("viewersIds ==",1).list();

使用以下方式获取所有收藏集:

ofy().load().type(Collection.class).list();

我做错了什么? 谢谢!

修改

更改Colllection对象以包含字符串列表lookupIds而不是Long

@Index
private List<String> viewersIds;

然后用以下方式查询:

ofy().load().type(Collection.class).filter("viewerIds", value).list();

的工作原理。如果列表可以是字符串,那么这可能是一个解决方案。

2 个答案:

答案 0 :(得分:1)

您正在&#39;

中寻找&#39;

.filter("<collection> in", value)

答案 1 :(得分:1)

要检查的一件事是,viewerIds确实在应该返回的实体中编入索引:https://console.cloud.google.com/datastore/entities/query