如何在mongodb中使用nodejs同意从不同集合中获取数据?

问题描述 投票:0回答:1

我使用mongoDB和nodejs我有4个集合集合1是教师,字段为teacher_id, teacher_namecollection 2是科目,字段为subject _id, subject_namecollection 3是书籍,字段为book_id, book_name。

集合是学生,其中有字段 -- _id, student_name, teacher_id, subject_id, book_id。

我怎样才能同时从1、2、3个集合中获取id,并插入到对应的id集合中呢?

我试过一些总是要求匹配的字段......有没有什么函数可以在没有匹配字段的情况下从集合中返回数据?

谁能帮助我?

node.js mongodb collections find aggregate
1个回答
0
投票

那么,在这种情况下,你需要从这些集合中获取所有的文档。这将是一个有点昂贵的聚合,但我在这里添加代码。

首先,我在null上进行分组,以避免在教师集合中的每一个文档中附加查找值。

db.teacher.aggregate([
  {
    $group:{
      "_id":null,
      "root":{
        $push:"$$ROOT"
      }
    }
  },
  {
  $lookup:
   {
     from:"subject",
     pipeline: [],
     as: "subjectLookup"
   }
  },
  {
  $lookup:
   {
     from:"book",
     pipeline: [],
     as: "bookLookup"
   }
  },
  {
  $lookup:
   {
     from:"student",
     pipeline: [],
     as: "studentLookup"
   }
  }
]).pretty()

这些查找值将给出一个数组,这个数组中包含了各个集合中的所有文档,你可以通过添加 $match 的管道中的查找阶段。

希望这能解决你的问题:)

© www.soinside.com 2019 - 2024. All rights reserved.