Я использую Doctrine ODM (MongoDB) и у меня есть что-то вроде следующегоПредварительной загрузка Doctrine ODM ссылочных документов
Attendee
документаAnswer
документа- каждой
Answer
ссылки одинAttendee
. (Один-ко-многим)
я сделать что-то вроде следующего
attendees = attendeeRepo.findby(whatever)
foreach(attendees as attendee)
answers = attendee.getAnswers()
Проблема здесь в том, что на каждом attendee.getAnswers()
Doctrine ODM выполняет запрос так:
db.TicketAnswer.find({
"attendee.$id": ObjectId("50ae80608ead0ea71e00008b")
})
если у меня есть 100 участников, 100 запросов, подобных этому, будут выполнены, поэтому я попытался предварительно загрузить все Answers
перед циклом. но это не сработало, как я ожидал.
Я думаю, что это не сработало, как я ожидал, поскольку это отношение «один ко многим», и я спросил одну сторону отношения (Attendee
), чтобы загрузить множество (Answer
). в других случаях, когда я делаю обратное, предварительная загрузка работает, как ожидалось.
Я не уверен, что является лучшим решением для такого случая. если у кого есть идеи, которые могут помочь.
спасибо, но пробовали его раньше. он работает только в том случае, о котором вы упомянули '@ReferenceMany (targetDocument =" Учетная запись ")' , но не работает для '@ReferenceMany (targetDocument =" Account ", mappedBy =" user ")' – Shreef