我有一个下面结构的文档,有两种类型的子文档。第二个子文档引用了一些第一个子文档但不是全部
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中答案模式的语法是什么?目前我有空数组,但不确定这是否是好方法
答案 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值存储在[]数组中,但同样,您需要自己处理任何逻辑/转换。