#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);
}
}
);