MongoDB: агрегація, populate vs lookup
userModel.create(
{ "_id" : 1, "name" : "Ivan", "favouriteFilmIds" : [1,3,5] },
{ "_id" : 2, "name" : "Igor", "favouriteFilmIds" : [1,2,3] },
{ "_id" : 3, "name" : "Vasil" }
)filmModel.create(
{ "_id" : 1, "name": "Titanic", genre: "drama" },
{ "_id" : 2, "name": "Lord of the Rings", genre: "fantasy" },
{ "_id" : 3, "name": "The King's Speech", genre: "drama" },
{ "_id" : 4, "name": "Gentleman", genre: "Action" },
{ "_id" : 5, "name": null },
)userModel.aggregate([
{
$lookup:
{
// название колекции фильмов
from: "films", // название колекции, а не модели!!!!
// поле в колекции пользователей, которое содержит id любимых фильмов
localField: "favouriteFilmIds",
// поле в колекции фильмов, которое должно отвечать id фильмов в
// коллекции пользователей
foreignField: "_id",
// как поле с документами фильмов будет называтся
as: "favouriteFilms"
}
}
])Last updated