如何获取平均星级值(原生mongodb & express)
How to get average star rating value (native mongodb & express)
使用 Express,我在 MongoDb breakfast-tacos
中有一个集合,其中包含一个名为 rating:
的字段。正在尝试计算 rating
字段的平均值,即不大于 5 的数字。正在尝试 aggregate
但一直得到 TypeError: db.collection(...).aggregate(...).then is not a function
。聚合 pipeline/mongo 的新手,谁能举个例子说明如何使用它来正确获取原生 mongodb(不是猫鼬)的平均值并给出解释?
我的代码:
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))
});
使用 Express,我在 MongoDb breakfast-tacos
中有一个集合,其中包含一个名为 rating:
的字段。正在尝试计算 rating
字段的平均值,即不大于 5 的数字。正在尝试 aggregate
但一直得到 TypeError: db.collection(...).aggregate(...).then is not a function
。聚合 pipeline/mongo 的新手,谁能举个例子说明如何使用它来正确获取原生 mongodb(不是猫鼬)的平均值并给出解释?
我的代码:
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))
});