繁体   English   中英

如何使用nodejs从mongodb中的不同collections聚合数据?

[英]how can i agregate datas from different collections in mongodb using nodejs?

我正在使用 mongoDB 和 nodejs 我有 4 个 collections 集合 1 是教师,字段为teacher_id,teacher_name 集合 2 是主题,字段为 _id,subject_name 集合 3 是书,字段为 book_id,book_name

集合是具有字段的学生 -- _id、学生姓名、教师 ID、主题 ID、书籍 ID

如何同时从 1、2、3 collections 获取 id 并插入到集合中的相应 id

我已经尝试过一些总是要求匹配字段的...是否有任何 function 即使没有匹配字段也会从集合中返回数据?

有人可以帮忙吗

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

首先,我在 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()

这些查找将给出包含来自各个 collections 的所有文档的数组,您可以通过在查找阶段的管道中添加$match阶段来限制文档。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM