无法在MongoDB中使用聚合函数

时间:2019-08-30 06:00:12

标签: database mongodb nosql mongodb-query aggregate

在MongoDB中的find函数之后可以使用聚合函数吗?我想查询文档,然后根据查找结果进行汇总。

db.movies.find({"runtime":30},{runtime:1,year:1,"imdb.rating":1,"imdb.votes":1,type:1,"tomatoes.viewer.rating":1,"awards.wins":1}).limit(3).aggregate([{$group:{_id:"$runtime",award_wins:{$sum:1}}}])

执行此命令后,我得到一个错误,聚合不是函数,

E QUERY [js] TypeError: db.movies.find(...).limit(...).aggregate is not a function :

3 个答案:

答案 0 :(得分:1)

aggregate()不能与find()一起使用。您应该使用相应的聚合方法来执行查询。

编辑: 试试看。

db.movies.aggregate([
{$match:{"runtime":30}},
{$project:{runtime:1,year:1,"imdb.rating":1,"imdb.votes":1,type:1,"tomatoes.viewer.rating":1,"awards.wins":1}},
{$limit:3},
{$group:{_id:"$runtime",award_wins:{$sum:1}}}
])

答案 1 :(得分:1)

按如下所示运行它,您无法在查找之后/之后运行聚合

db.movies.aggregate([
{$match:{"runtime":30}},
{$project{runtime:1,year:1,"imdb.rating":1,"imdb.votes":1,type:1,"tomatoes.viewer.rating":1,"awards.wins":1}},
{$limit:3},
{$group:{_id:"$runtime",award_wins:{$sum:1}}}
])

答案 2 :(得分:1)

要调用聚合函数,必须使用db..aggregate而不是find。请尝试以下操作:

db.movies.aggregate({"runtime":30},{runtime:1,year:1,"imdb.rating":1,"imdb.votes":1,type:1,"tomatoes.viewer.rating":1,"awards.wins":1}).limit(3).aggregate([{$group:{_id:"$runtime",award_wins:{$sum:1}}}])