如何获取聚合中字段的值数组

how get value array of a field in aggregation

我有一个 collection 保存有关电影的信息,这个 collection 名称是 Movie。此字段之一是 stars,用于保存在电影中扮演的演员。我将 stars 保存在一个数组中。 现在我想写一个带有聚合的函数,可以 return 给我在大多数电影中播放的明星 。此外,我在用户 collection 中保存了星星。我写了这个函数,但它是错误的。因为它将星星分组为数组

async function starsActMostMovies(){
const res = await Movie.aggregate([
    {
        $group: {
            _id : '$stars'
        }
    }
])
return res
}
starsActMostMovies().then(function(result){
console.log(result)})

并且在 我写了我的数据库模型。

首先,您应该在该字段的开头拆分数组,这样您的 collection 将只包含一颗星。

使用$unwind运算符来执行它。例如:

Movie.aggregate([
    {
        $unwind: '$stars'
    },
    {
        $group: {
            _id : '$stars' 
        }
    }
])

$unwind 后 $group 将按星执行聚合。 祝你好运!