Nodejs + Mongodb выборка(типа 2-я нормальная форма, справочник)
Есть 2 коллекции: Users(_id, email) и Categories(_id, name, user). Нужно получить массив с именами категорий и email-ом юзера ее создавшего.
Нашел решение делая выборку отдельно из двух коллекций, формируя новый массив объектов через map и find.
const allCategories = await Categories.find();
const allUsers = await Users.find();
const data = allCategories.map((c) => {
const user = allUsers.find((i) => String(i._id) === String(c.user));
return {
category: c.name,
user: user.email
}
});
Возможно ли сделать такую выборку средствами базы данных одним запросом?
Ответы (1 шт):
Автор решения: Sergio Glock
→ Ссылка
Такой запрос дает нужный результат
db.getCollection('categories').aggregate([
{
$lookup:
{
from: "users",
localField: "user",
foreignField: "_id",
as: "user_info"
}
}
])