什么是一对多关系中的Morphia或Java驱动程序查询?

时间:2011-07-05 12:04:34

标签: mongodb morphia

假设我有用户收集和子集合。

假设我有一个特定的用户和孩子(这是用户的多方)有一个字段 类型字符串的状态。我想在status =“active”的用户中搜索那个孩子。

如果用户中只有一个孩子可以随时拥有status =“active”,那么查询是否会有所不同,尽管没有一个孩子的状态等于“有效”?

儿童不是嵌入式的,而是用户参考。

这是我的解决方案,但对我来说效率不高;

for (c : user.children) {
      if (c.status == "active") {
        child = c
      }
    }

1 个答案:

答案 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();