什么是指向同一集合中的另一个子文档的子文档的Mongoose模型

时间:2015-08-03 22:04:53

标签: mongoose

我有一个下面结构的文档,有两种类型的子文档。第二个子文档引用了一些第一个子文档但不是全部

var snippet = new schema{
 data:string,
 questions:[question],
 answers:[answer]
};

var question = new schema{
  questiontext:string
}
var answers = new schema{
   answertext :string,
   questionsAnswered : []
}

这里是' answertext'需要与多个问题相关联,因为答案可能对多个问题有效。

在答案架构中,我应该如何存储问题。我不想再次存储问题对象数据,因为它会重复数据,并且如果某些问题被修改,那么它也需要在questionsAnswered子文档中进行修改。所以基本上我想把问题的_id存储在已回答的问题中。

mongoose中答案模式的语法是什么?目前我有空数组,但不确定这是否是好方法

1 个答案:

答案 0 :(得分:0)

这个答案有点迟了,但是,如果有人需要解决方案......

你可以像现在这样做。但是,我认为你正在寻找类似的东西:

var mongoose = require('mongoose'),
  Schema = mongoose.Schema;

var question = new Schema({
  questionText: String
});

var answers = new Schema ({
  answertext: String,
  questionsAnswered : [{
    type: Schema.ObjectId,
    ref: 'question'
  }]
});

这将允许您存储引用存储的问题文档的ObjectIds数组。严格地说,您不需要使用ObjectId,而是可以将_ids存储为字符串,如果您有理由这样做的话。

...
questionsAnswered : [String]
...

但是,您必须自己处理逻辑,将ObjectIds转换为字符串,反之亦然。就此而言,您可以将问题的_id值存储在[]数组中,但同样,您需要自己处理任何逻辑/转换。