как получить информацию о другой коллекции с поиском - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть 2 коллекции: Кино и Пользователь. в фильме я сохранил информацию о фильмах, таких как звезды , актеры, которые играют в фильме. я сохранил это поле как массив в коллекции фильмов. Теперь я хочу написать запрос, который возвращает имя звезды. но это поле имени сохранено в пользовательской коллекции. Как я могу извлечь данные из другой коллекции в эту коллекцию? Я пишу эту функцию, но это неправильно, и stars_doc пуст. это моя функция:

async function starsActMostMovies(){
const res = await Movie.aggregate([
    {
        $unwind: '$stars'
    }
    ,
    {
        $lookup:
        {
            from: "User",
            localField: "_id",
            foreignField : "stars",
            as: "stars_doc"
        }
    }
    ,
    {
        $group: {
            _id : '$stars' ,
            count : { $sum : 1}
        }
    }
    ,
    {$sort: {count: -1}}
])
return res
}
starsActMostMovies().then(function(result){
    console.log(result)})

и по этой ссылке Я написал свою базу данных моделей.

1 Ответ

0 голосов
/ 10 ноября 2018

Глядя на модели вашей базы данных, я думаю, что вы можете иметь неверную ссылку в строке определения вашего фильма. Внутри вашей схемы фильма у вас есть:

stars:[{
type: Schema.Types.ObjectId,
ref: 'userSchema'
}],

но ваша пользовательская модель определяется как:

var User = mongoose.model('user', userSchema);

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

...