Предупреждение (students: [{id: ""}, {id: ""}]
структуры коллекции школы может приходит неразумным. Но вместо размещения моих документов, я пытаюсь создать подобную структуру)
Предположат, у меня есть две разных коллекций.
Один из них: user
коллекция as;
{id: "1", name: "alex"},
{id: "2", name: "sasha"},
{id: "3", name: "lenny"},
{id: "4", name: "hannah"}
другой: school
коллекция as;
{
"id" : "1",
"name" : "University of Cambridge",
"students" : [
{
"id" : "1"
},
{
"id" : "2"
}
],
}
{
"id" : "2",
"name" : "University of Oxford",
"students" : [
{
"id" : "3"
},
{
"id" : "4"
}
],
}
Что мне нужно, это сопоставить имя пользователя с их именем и отобразить его имя в новом столбце как;
{
id: "1",
name: "University of Cambridge",
students: [
{id: "1"},
{id: "2"}
],
studentNames: ["alex", "sasha"]
},
{
id: "2",
name: "University of Oxford",
students: [
{id: "3"} ,
{id: "4"}
],
studentNames: ["lenny" , "hannah"]
}
Что я сделал до сих пор?
db.school.aggregate([
{
$lookup: {
from: "student",
localField: "students.id",
foreignField: "id",
as: "studentName"
}
},
])
, но этот запрос возвращает studentName
как пустой;
{
"id" : "1",
"name" : "University of Cambridge",
"students" : [
{ "id" : "1" },
{ "id" : "2" }
],
"studentName" : [ ]
}
{
"id" : "2",
"name" : "University of Oxford",
"students" : [
{ "id" : "3" },
{ "id" : "4" }
],
"studentName" : [ ]
}
Что мне не хватает?
Добавить {$ раскрутку: "$ студентов"}, прежде чем искать сцену. Из документов. Если ваш localField является массивом, вам нужно добавить этап $ unwind в ваш конвейер. Подробнее здесь https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/ – Veeram