在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 :
答案 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}}}])