【问题标题】:What is the Mongoose model for subdocuments pointing to another subdocument in the same collection指向同一集合中另一个子文档的子文档的 Mongoose 模型是什么
【发布时间】:2015-10-26 03:58:28
【问题描述】:

我有一个具有以下结构的文档,其中包含两种类型的子文档。第二个子文档是指一些第一个子文档,但不是全部

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

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

此处的“答案文本”需要链接到多个问题,因为一个答案可能对多个问题有效。

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

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

【问题讨论】:

    标签: mongoose


    【解决方案1】:

    这个答案来的有点晚,但万一有人需要解决方案......

    您可以按照自己的方式进行操作。但是,我认为您正在寻找类似的东西:

    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'
      }]
    });
    

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

    ...
    questionsAnswered : [String]
    ...
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-14
      • 2015-10-31
      • 2015-08-19
      • 2021-08-16
      • 1970-01-01
      • 2017-06-13
      • 2021-03-27
      • 2020-04-24
      相关资源
      最近更新 更多