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

Mongodb 什么是一对多关系中的Morphia或Java驱动程序查询?,mongodb,morphia,Mongodb,Morphia,假设我有用户集合和子集合 假设我有一个特定的用户,而子用户(用户的多个方面)有一个字段 类型字符串的状态。我想在user where status=“active”中搜索该子级 如果用户中只有一个子项在任何时候都可以具有status=“active”,但没有一个子项的状态可能等于“active”,那么查询是否会有所不同 子项不是嵌入的,而是用户中的引用 这是我的解决方案,但在我看来不是很有效 for (c : user.children) { if (c.status == "act

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

假设我有一个特定的用户,而子用户(用户的多个方面)有一个字段 类型字符串的状态。我想在user where status=“active”中搜索该子级

如果用户中只有一个子项在任何时候都可以具有status=“active”,但没有一个子项的状态可能等于“active”,那么查询是否会有所不同

子项不是嵌入的,而是用户中的引用

这是我的解决方案,但在我看来不是很有效

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

要直接搜索数据库,请在子类中添加“parentId”字段:

public class Children {
  public String status;
  public ObjectId parentId; // point to the parent of this child
}
接下来的路是这样的:

如果您使用纯morphia:

Datastore ds = ...;
Children activeChild = ds.find(Children.class).filter("status", "active").filter("parentId", user.getId()).get();
如果您正在使用Play!具有PlayMorphia模块的框架:

Children activeChild = Children.find("status,parentId", "active", user.getId()).get();

请提供更多详细信息:儿童是否嵌入文档?发布一些示例对象