1

我是 NoSql MongoDb 的新手(今天)并试图了解 Morphia。
我想要一个这样的@Entity:


如果我有 3 个名为Stat
Friendlist
Userdata的表(集合)
,我将 UserData.Class 保存在 Userdata 权限中,并将 Statistic.Class 保存在 Stat 中,依此类推...

我的想法是,如果我给每个用户一个唯一的 ObjectId UUID nr,然后每个 Statistic 和 FriendList 都有这个 UUID nr 作为 ObjectId。因为如果程序只需要运行统计信息,它将仅加载/针对统计信息工作。

@Entity
public class UserData {

    @Id private ObjectId id = "UUID 123456789;
    public String userName = "";
    public String password = "";    
    @Embedded
    private Statistic statistic;
    @Embedded
    private FriendList friendList;
}

如果有像 18000/小时的请求来获取 UserData,那么像这样声明它们会不会更快:(
我使用相同的 ObjectId,它们存储在单独的集合(表)中

@Entity
public class UserData {

    @Id private ObjectId id = "UUID 123456789;
    public String userName = "";
    public String password = "";
}

@Entity
public class Statistic {

    @Id private ObjectId id = "UUID 123456789;
    public int loginTimes;
    public String gps;

}

@Entity
public class FriendList {

    @Id private ObjectId id = "UUID 123456789;
    public ArrayList<String> fiends;
}
4

2 回答 2

2

我认为正确的是使用 DBRef 或 Embedded。

如果您也想要其他对象中的列表的某些对象,请使用 DBRef,如果没有,请使用嵌入式。

例如,在博客文章中,评论永远不会在另一篇文章中使用,因此,它是嵌入的。

所以,使用类似的东西:

@Entity
public class UserData {

@Id private ObjectId id = "UUID 123456789;
public String userName = "";
public String password = "";    
@Embedded
private Statistic statistic;
@Embedded
private List<Friends> friendList;
}

希望能帮助到你。

于 2011-09-21T12:49:27.070 回答
0

嵌入式总是更快,因为参考存储在不同的物理位置。

于 2012-09-22T02:17:23.320 回答