как я могу собрать данные из разных коллекций в mongodb, используя nodejs? - PullRequest
1 голос
/ 24 апреля 2020

Я использую mongoDB и nodejs У меня есть 4 коллекции. Коллекция 1 - учитель с полями teacher_id, учитель_имя коллекции 2 - предмет с fieldssubject _id, subject_name collection 3 - книга с полями book_id, book_name

коллекция - учащийся, у которого есть поля - _id, student_name, teacher_id, subject_id, book_id

как я могу получить идентификаторы из 1, 2, 3 коллекций одновременно и вставить в соответствующий идентификатор в коллекции

Я пробовал некоторые, которые всегда запрашивают совпадающее поле ... есть ли какая-либо функция, которая возвращает данные из коллекции, даже если нет совпадающего поля?

Может кто-нибудь помочь

1 Ответ

0 голосов
/ 24 апреля 2020

Ну, в этом случае вам нужно получить все документы из этих коллекций. Это будет немного дорогостоящая агрегация, но я добавляю сюда в коде:

Во-первых, я группирую по нулю, чтобы избежать добавления значения поиска к каждому отдельному документу в коллекции учителей.

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 в конвейер этапа поиска.

Надеюсь, что это решит вашу проблему: )

...