Мангуст получает все элементы в массиве из нескольких документов

#mongoose

#мангуст

Вопрос:

У меня есть класс схемы со свойствами:
_id
studentEmails (массив строк. У каждого учащегося есть уникальный адрес электронной почты)

Мне предоставлен массив идентификаторов классов, и я хочу найти каждое электронное письмо учащегося, принадлежащее одному из этих классов, без дубликатов. Как мне это сделать? Я думал, что смогу получить электронное письмо каждого ученика, а затем удалить дубликаты позже, но я бы предпочел сделать это через мангуста.

Например, если бы у меня были следующие классы:

 _id: 1
studentEmails: ["a@school.edu", "b@school.edu"]

_id: 2
studentEmails: ["b@school.edu", "d@school.edu"]
  

И следующий параметр запроса:

 [1, 2]
  

Я хочу получить [a@school.edu , b@school.edu , d@school.edu ]. _id — это объектный идентификатор mongoose, но упрощенный в примере.

Комментарии:

1. вы можете использовать in, вот пример p.find() .where(«studentEmails») .in([1, 2])

Ответ №1:

Для этого вы можете использовать distinct метод с условием.

 Model.distinct(
  "studentEmails",
  { _id: { $in: [mongoose.Types.ObjectId("1"), mongoose.Types.ObjectId("2")] } },
  function (err, data) {
    if (err) {
      console.log(err);
    } else {
      console.log(data);
    }
  }
);