1

假设我有用户收藏和儿童收藏。

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

如果用户中只有一个孩子可以在任何时候拥有 status="active" 查询是否会有所不同,尽管没有一个孩子的状态等于 "active" ?

儿童不是嵌入的,而是在用户中引用。

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

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

1 回答 1

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();
于 2012-01-17T04:42:31.313 回答