我有一个种类 学生,其中存储了所有学生喜欢的颜色的详细信息。允许他们从三种颜色中选择自己喜欢的颜色:{Red,Blue,Green}
让我们假设有100个学生,我的代码是每个学生都这样:
Entity arya = new Entity("Student","Arya");
arya.setProperty("Color","Red");
Entity robb = new Entity("Student","Robb");
robb.setProperty("Color","Green");
..
..
Entity jon = new Entity("Student","Jon");
jon.setProperty("Color","Blue");
如何找出有多少学生喜欢这种学生种类中的特定颜色(例如红色)?我应该写什么查询来获取计数?
预先感谢
答案 0 :(得分:1)
您要查找的数字将是查询结果中带有Color
属性的相等过滤器的项数。
为此,您可以使用仅键查询(一种特殊的projection query),速度更快且成本更低:
仅键查询
一个仅键查询(这是一种投影查询)仅返回 结果实体的键,而不是实体本身的键,位于 与检索整个实体相比,延迟和成本更低。
...
仅键查询是一个很小的操作,仅算作一个查询 实体读取查询本身。
遵循这些原则(但请注意,我不是Java用户,该代码段仅基于文档示例)
Query<Key> query = Query.newKeyQueryBuilder()
.setKind("Student")
.setFilter(PropertyFilter.eq("Color", "Red")
.build();
答案 1 :(得分:0)
我同意Dan Cornilescu的回答。 Here是Datastore API的直接用法。我已经为您的用例准备了请求正文。您可以通过添加项目ID来运行它。这将返回与过滤器匹配的实体,然后您可以计算它们的数量。