Я хотел бы написать запрос для получения данных из mongodb, у меня есть три коллекции - книги, учителя, ученики. В коллекции книг есть bookName и_id, в коллекции учителей - teacherName и teacherId, в коллекции учеников _id, studentName, TeacherId…. У меня есть studentName как S1 и teacherName как T1 со мной, как я могу получить запись студента с именем S1, у которой также есть teacherId как имя T1 (из коллекции учителей) из коллекции студентов ... например, мне нужно получить книги _id с именем, указанным из коллекции книг, а также от учителей и учеников, которых я должен подать, выберите _id у ученика, где studentName = S1 и teacherId = (выберите techerID из techer, где teacherName = T1) ... как я могу написать этот запрос в узле с использованием агрегации - ниже мой код, может ли кто-нибудь помочь мне исправить мой код
books.aggregate([{
'$match': {
'name': 'book1'
}
}, {
'$lookup': {
{
from: students,
'$match': {
'name': 'Annie'
}
},
'from': 'teachers', // collection name of the teachers
'localField': 'teacherId',
'foreignField': '_id',
'as': 'teachers'
}
}, {
'$match': {
'teachers': {
'$elemMatch': {
'teacherName': 'Jones'
}
}
}
}])
например ..
books
ID1, physics
ID2, chemistry
tecaher
t1, zed
t2, tom
student
s1, annie, zed(//teacher name)
s2, john, zed
s3, leya, tom
Я уже вставил книги и коллекции учителей, теперь мне нужно получить студенческую запись так, чтобы у нее было имя s1 и teacherid в качестве идентификатора zed из коллекции учителей, но нужен идентификатор techer Zed из коллекции techer и идентификатор книги по физике из коллекции книг ... поэтому я начал как books.agregate (соответствие имени книги), затем найдите ученика, но у ученика есть только имя Чайхер, с которым я должен найти идентификатор учителя из коллекции учителей ... Я должен вставить идентификатор, имя, идентификатор учителя в запись ученика