通过猫鼬在 mongodb 中保存家谱的最佳做法是什么?

What will be the best practice to save family tree in mongodb via mongoose?

我正在使用 nodejs 和 mongoose,我想将家谱保存到 mongoose。我的问题是关于架构的。更好的是:拥有一个 person 模式,其中有一个存储家庭成员 ID 的数组字段,或者有其他方法可以做到这一点。因为如果我想找到一个人及其所有家庭成员,机器必须检查所有的人并检查他们是否是该人的家庭成员。有没有更有效的方法?

你能做什么:

解决方案一 是拥有一个有 id 的家庭模型,在用户模型中我会有一个带有家庭 id 的字段(如果你不认为家庭模型需要时,您可以只拥有一个带有姓氏的字段,但每个家庭都必须是唯一的)。

家庭模型示例:

var FamilySchema = new Schema({
  name: String
});

var family = db.model('family', FamilySchema);

var PersonSchema = new Schema({
 name : String,
 family : { type : Mongoose.Schema.ObjectId, ref : 'family' }
});

以姓氏作为字符串的简单示例:

var PersonSchema = new Schema({
 name : String,
 family : String
});

此外,如果您在用户模型中的家庭字段上放置索引,那么检索某人的所有家庭成员会非常快。这里有更多关于 mongodb 数据库中索引的信息:http://docs.mongodb.org/manual/indexes/

解决方案二你可以使用一个集合,包含所有家庭成员的家庭模型。

var PersonSchema = new Schema({
  name : String
});

var person = db.model('person', PersonSchema);

var FamilySchema = new Schema({
  name : String,

  members : [{ type : Mongoose.Schema.ObjectId, ref : 'person' }]
});