从另一个子文档填充猫鼬的子文档,其中两个子文档都是主文档的一部分

香布

我在这里尝试从同一集合中的另一个子文档中填充一个子文档时遇到了挑战。这可能吗?下面是我的示例架构

var chapter = new Schema({
  title:String,
  startPage:Number,
  endPage:Number
});


var keyPoint = new Schema({
  text:String,
  mentionInChapter:[{
      type: Schema.ObjectId,
      ref: 'chapter'}]
});


var Book = new Schema({
   title:String,
   author:String,
   chapters:[chapter],
   keyPoints:[keypoint]
});

我在下面尝试过,它没有在keyPoints数组中填充ChapterID。

Book.findById(id).populate('chapter')。exec(function(err,doc){if(!err)console.log(doc);});

有没有一种方法可以使我检索到的Book文档具有所有详细信息?

阿尔特姆·巴拉诺夫斯基(Artem Baranovskii)

您可以尝试使用Model.populate方法,如下所示:

var chapter = new Schema({
  title:String,
  startPage:Number,
  endPage:Number
});

var keyPoint = new Schema({
  text:String,
  mentionInChapter:[{type: Schema.ObjectId, ref: 'chapter'}]
});

var Book = new Schema({
   title:String,
   author:String,
   chapters:[chapter],
   keyPoints:[keyPoint]
});

Book.findById(id)
   .lean()
   .populate('chapters keyPoints')
   .exec(function (err, docs) {
      if (err) throw err;

      Book.populate(docs, {path: 'keyPoints.mentionInChapter'}, function (err, book) {
         if (err) throw err;

         console.log(book);
      });
   });

更新:版本2:

var chapter = new Schema({
  title:String,
  startPage:Number,
  endPage:Number
});

var keyPoint = new Schema({
  text:String,
  mentionInChapter:[{type: Schema.ObjectId, ref: 'chapter'}]
});

var Book = new Schema({
   title:String,
   author:String,
   chapters:[chapter],
   keyPoints:[keyPoint]
});

Book.findById(id).exec(function (err, doc) {
   if (err) throw err;

   Book.populate(doc, {path: 'keyPoints.mentionInChapter'}, function (err, book) {
      if (err) throw err;

      console.log(book);
   });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在另一个子文档数组中的猫鼬增量子文档数组值

如何使用原子查询更新猫鼬中另一个子文档中的一个子文档?

如何在猫鼬中填充另一个模型的子文档?

通过ID查找文档并推送另一个子文档

猫鼬填充如何将填充子文档连接到另一个集合

Mongoose ADDING/SUMING 子文档数组值位于另一个子文档数组中

如何在猫鼬中仅获得一个子文档中的一项?

猫鼬子文档中另一个无效模式错误

如何用猫鼬中另一个集合的文档填充文档的字段时查询文档?

如何填充作为另一个文档的数组元素的子文档的字段?

填充猫鼬子文档

mgo,mongodb:查找一个嵌入式文档,该文档是数组的一部分

用C中的另一个子字符串替换字符串的一部分

如何用另一个子字符串替换字符串的一部分

MongoDB $ match不适用于子文档的一部分

MongoDB /节点:将集合中的一部分文档插入另一个集合中的文档

仅检索文档的一部分

jQuery文档的准备功能太长,我想导出其中的一部分

如何将xml节点作为第一个子节点插入Java中的另一个xml文档中?

猫鼬填充子文档数组

用猫鼬填充子文档

如何填充子文档的参考(猫鼬)

如何使用猫鼬保存文档并更新另一个相互依赖的文档

子文档数组上的 MongoDB 查询和投影也返回另一个文档的数组

如何通过在pyspark上插入子文档将两个文档合并为一个文档?

猫鼬/ mongodb-另一个文档的参考值

更新猫鼬文档中另一个数组内的数组中的字段

如何在mongodb中动态$ set一个子文档字段?

匹配,更新并返回数组中的最后一个子文档