我正在尝试使用 Morphia + MongoDb 为每个类配置提供表
@Entity("user")
public class User{
@Id
private ObjectId id;
private String username;
public void setId(ObjectId id){
this.id = id;
}
public ObjectId getId(){
return this.id;
}
public void setUsername(String username){
this.username = username;
}
public String getUsername(){
return this.username;
}
}
和助理
@Entity("assistant")
public class Assistant extends User{
private String fullname;
public String getFullname(){
return this.fullname;
}
public void setFullname(String fullname){
this.fullname = fullname;
}
}
我想有一个具有相同 ObjectId 的用户文档和助理文档。这是怎么做到的?
MongoDB不是一个关系数据库,你需要改变你的心理和数据库模型。
如果某人是助手,则所有数据都将转到assistant
集合。没有联接(聚合除外,但您不希望为简单的用户查找执行此操作),因此所有信息都应位于一个实体中。
您甚至可以将助手保留在user
收藏中。或者用更笼统的术语来说:将所有子类保留在其父类的实体中。 Morphia 会自动存储每个实体的 Java 类,因此您可以简单地对其进行过滤。由于没有严格的架构,因此也没有空值,因为 JSON 仅存储可用属性。