假设我有用户收集和子集合。
假设我有一个特定的用户和孩子(这是用户的多方)有一个字段 类型字符串的状态。我想在status =“active”的用户中搜索那个孩子。
如果用户中只有一个孩子可以随时拥有status =“active”,那么查询是否会有所不同,尽管没有一个孩子的状态等于“有效”?
儿童不是嵌入式的,而是用户参考。
这是我的解决方案,但对我来说效率不高;
for (c : user.children) {
if (c.status == "active") {
child = c
}
}
答案 0 :(得分:0)
要直接搜索db,您可以在Children类中添加“parentId”字段:
public class Children {
public String status;
public ObjectId parentId; // point to the parent of this child
}
然后这是要走的路:
如果你使用纯吗啡:
Datastore ds = ...;
Children activeChild = ds.find(Children.class).filter("status", "active").filter("parentId", user.getId()).get();
如果您使用Play!Framework与PlayMorphia模块:
Children activeChild = Children.find("status,parentId", "active", user.getId()).get();