【发布时间】:2019-09-10 13:08:09
【问题描述】:
首先:我 -> MongoNoob 我知道这已经被以一种或另一种方式提出过,但直到现在我还没有找到任何具体的东西。 假设我有两个这样描述的 Moongoose 模型:
var pollSchema = mongoose.Schema({
title: String,
choices: [{
content: String
}]
});
var choiceSchema = mongoose.Schema({
poll_id: mongoose.Schema.ObjectId,
option: Number
});
用户界面显示投票,当用户选择一个选项时,它会被写入choiceSchemamodel。现在我想创建一个“统计数据”,告诉我有多少用户选择了选项 1、选项 2、选项 3,......
我可以简单地使用find 获取投票的所有选项并在服务器代码中生成统计信息,但是如果我有一百万个用户选项,我将不得不处理一个相同大小的数组。这不可能是对的。
但是我可以生成一个查询并使用count()method:
var query = Choice.find({poll_id: someId}),
query.where('option', 1);
var resultForOption1;
query.count(function(err, count)) {
resultForOption1 = count;
});
我将如何为多个选项执行此操作并将结果“加入”(哈哈)到一个数组中?由于这都是异步的,我会嵌套调用,但这不是可变数量查询的选项。
我是不是只见树木不见森林 :-)?有人能指出我正确的方向吗?
BR, 丹尼尔
【问题讨论】:
-
我建议您创建一个记录汇总结果并存储值的文档,而不是尝试实时计算它们。
标签: javascript node.js mongodb mongoose