如何解决如何获得平均星级值原生mongodb & express
使用 Express,我在 MongoDb breakfast-tacos
中有一个集合,其中包含一个名为 rating:
的字段。尝试计算 rating
字段的平均值,即不大于 5 的数字。尝试 aggregate
但一直得到 TypeError: db.collection(...).aggregate(...).then is not a function
。聚合管道/mongo 的新手,谁能举例说明如何正确使用本机 mongodb(不是 mongoose)获得平均值并解释?
我的代码:
app.get('/breakfast-rating',(req,res) => {
db.collection('breakfast-tacos').aggregate([{$group: { "_id": "$ObjectId"},$avg: {"rating":"$rating" }}])
.then(results => {
res.send({ rating: results });
})
.catch(error => console.error(error))
});
解决方法
如果您只是想确定所有 rating
字段的平均值,您需要像这样简单的事情:
db.collection.aggregate([
{
$group: {
_id: "avg",avgrating: {
$avg: "$rating"
}
}
}
])
所以你的代码应该是这样的:
app.get('/breakfast-rating',(req,res) => {
db.collection('breakfast-tacos').aggregate([
{
$group: {
_id: "avg",avgrating: {
$avg: "$rating"
}
}
}
])
.then(results => {
res.send({ rating: results[0].avgrating });
})
.catch(error => console.error(error))
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。