通过对唯一ID进行分组来计算5星评级的平均值
通过对唯一ID进行分组来计算5星评级的平均值
[我正在尝试计算用户单击任意数量的星级时传递给数据库的平均5星级。
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ratingSchema = mongoose.Schema({
userId: {
type: Schema.Types.ObjectId,
ref: 'User'
},
productId: {
type: Schema.Types.ObjectId,
ref: 'Product'
},
noOfStars: {
type: Number,
default: 0
}
},{timestamp: true})
const Rating = mongoose.model('Rating', ratingSchema);
module.exports = {Rating}
这是我创建的用于发送特定产品评分的模型。当用户单击星形时,星形值,产品ID和用户ID将插入到数据库中。
import React,{useEffect,useState} from 'react';
const aggregate = require("../models/rating").Rating.aggregate;
const{Rating}=require('../models/rating');
exports.RatingAdd=(req,res) =>{
aggregate(
[
{
$group:
{
_id: "$productId"
}
}
]
)
}
这是我创建的用于检索特定产品的平均星级值并将其显示在前端的控制器。我不明白如何获取相同产品ID的计数,然后将总星数值除以产品ID计数。我无法获得每种产品的正确平均值。我应该如何编辑代码以得出每个产品的平均星级,并将平均星级和产品ID传递给我的前端?
回答如下:db.products.aggregate({$group:{_id:'$productId',count:{$sum:1},avgStar:{$avg:'$noOfStars'}}} )
这是您需要的吗?以下是我使用的虚假数据...请忽略5个以上的评分。
{
"_id" : ObjectId("5ec40a1cce367b3630df8f0b"),
"userId" : "A",
"productId" : "A",
"rating" : 5
}
{
"_id" : ObjectId("5ec40a1fce367b3630df8f0c"),
"userId" : "A",
"productId" : "A",
"rating" : 6
}
{
"_id" : ObjectId("5ec40a21ce367b3630df8f0d"),
"userId" : "A",
"productId" : "A",
"rating" : 7
}
{
"_id" : ObjectId("5ec40a22ce367b3630df8f0e"),
"userId" : "A",
"productId" : "A",
"rating" : 8
}
{
"_id" : ObjectId("5ec40a25ce367b3630df8f0f"),
"userId" : "A",
"productId" : "B",
"rating" : 8
}
{
"_id" : ObjectId("5ec40a2bce367b3630df8f10"),
"userId" : "A",
"productId" : "B",
"rating" : 9
}
{
"_id" : ObjectId("5ec40a2cce367b3630df8f11"),
"userId" : "A",
"productId" : "B",
"rating" : 10
}
{
"_id" : ObjectId("5ec40a30ce367b3630df8f12"),
"userId" : "A",
"productId" : "C",
"rating" : 10
}
结果:
{ "_id" : "C", "count" : 1, "avg" : 10 }
{ "_id" : "A", "count" : 4, "avg" : 6.5 }
{ "_id" : "B", "count" : 3, "avg" : 9 }
最新文章
- 信雅达面试
- 自定义注解实现RBAC权限校验,不要再说你不会了
- Hibernate Annotation
- spring之Annotation
- 综艺节目php灭灯
- 程序员的情感修养 —— 专访“非诚勿扰”牵手成功男嘉宾程序员石川
- 黑客养成记(4)
- 关于使用ComponentName连接俩个Activity运行闪退的问题
- 全球五大职场社区
- css复合选择器(后代选择器、子代选择器、并集选择器、链接伪类选择器、:focus选择器)
- 用JS 控制文字两行 ,展示省略号(兼容谷歌 IE等各大浏览器)
- HTK初论
- [SOA介绍]什么是SOA?
- lssvr matlab,lssvm(最小二乘支持向量机)matlab
- pgpool读写分离,配置设置及调研
- C++实现matlab中的interp1和interp2插值
- MFCCList使用
- https ssl单项认证和双向认证以及证书生成
- 计算机软件可以用虚拟串口吗,虚拟串口以及在Proteus中的使用
- PyQt5数据库开发2 5.1 QSqlQueryModel