【问题标题】:Querying google datastore by key and sorting by another property通过键查询谷歌数据存储并按另一个属性排序
【发布时间】:2010-06-29 20:03:55
【问题描述】:

我在 java 中使用低级数据存储接口。我有一个存储密钥集合的实体。我想查询数据存储以获取集合中的所有实体。但是,我还想在创建的日期属性上对它们进行排序。所以,我想做这样的事情:

Query query = new Query(EndeavorUpdate.ENDEAVOR_UPDATE_ENTITY_TYPE);
//getEndeavorUpdateIds() returns a List < Key >
query.addFilter("__key__", Query.FilterOperator.EQUAL, getEndeavorUpdateIds());
query.addSort(EndeavorUpdate.CREATED_DATE_PROPERTY);
PreparedQuery pq = ds.prepare(query);

但是,我得到一个例外,说“不允许值的集合”。如果我使用 IN 而不是 EQUAL,它确实有效,但这似乎非常低效。

有没有办法有效地执行此查询,或者我应该从数据存储中获取所有实体并自己进行排序?

【问题讨论】:

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


    【解决方案1】:

    由于您拥有密钥,因此直接通过密钥获取所有实体然后自己按日期对它们进行排序是最有效的。

    自己进行排序也可能使您无需在 EndeavorUpdate 模型的创建日期字段上建立索引(取决于您是否在代码中的其他地方也需要这样的索引)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      相关资源
      最近更新 更多