私は、Mongooseを使ったNodeJSベースのアプリケーションを持っています。私は、各質問が尋ねられたときに、アンケートに回答した人々が提供した評価の平均値があるところで、回答を作成したいと考えています。次のようにマングース&コレクションのレーティングの平均は?
私のスキーマになります。
const questionnaireResultSchema = new Schema({
user: { type: ObjectId, ref: 'User' },
questionnaire: { type: ObjectId, ref: 'Questionnaire' },
rating: [{
id: Number,
question: String,
value: Number
}]
},{
timestamps: true
}).index({user: 1, questionnaire: 1}, {unique: true});
私はマングースaggregator operator見てきましたが、私は私が私の場合に適用する方法を確認していません。以下のようになり擬似コードは次のとおりです。
- がID XYZのアンケートのすべてのアンケート結果を探す
- 各アンケート結果の評価が
は、例えば、応答が見える平均化された結果を提供します次のように:
[{
id: 1,
question: 'How strongly do you feel about candidate A?',
value: 12 // averaged value
},{
id: 2,
question: 'How strongly do you think we should change the sky color to green?',
value: 31 // averaged value
},{
id: 3,
question: 'How strongly do you think your answers count?',
value: 20 // averaged value
}]
私が試してみました:
QuestionnaireResultSchema.aggregate([{
$match: {
questionnaire: questionnaire
}},
{$project: {
scores: { $avg: '$scores'}
}}
]);
これだけでJSONを提供します:コレクション内の
[{
"_id": "57bbd4b495407f6145b3ba9f",
"scores": null
}]
サンプル文書は、希望:
{
user: ObjectId("57bca30536e376c653f439bb")
questionnaire: ObjectId("37bca0feedb0bc470353ab")
scores: [{
id: 1,
question: 'How strongly do you feel about candidate A?',
value: 3
},{
id: 2,
question: 'How strongly do you think we should change the sky color to green?',
value: 4 // averaged value
},{
id: 3,
question: 'How strongly do you think your answers count?',
value: 5 // averaged value
}]
}
私は平均値を自分で計算することができますが、マングースは、機能を提供する場合、私はむしろだろうそれを活用する。
ご協力いただければ幸いです。
私は尋ねられたように質問を更新しました –