我正在设计一个简单的数据库来容纳两种类型的数据:
当前数据流的工作方式:在第一个表中创建了许多任务,当它们完成后,会计算一些任务后的统计信息,然后将其附加(与一些公式汇总)到任务单的“任务后聚合统计信息”行中。具有相同用户的第二个表。然后删除原始任务。
为了清楚起见,下面是一个带有数据值的示例:
任务:
{
id: {uuid}
user: {user_id}
create_time: {timestamp}
last_modified_time: {timestamp}
description: {string}
completion_time: {int}
length: {int}
difficulty: {int}
cost: {int}
...
}
任务后汇总统计
{
id: {uuid}
user: {user_id}
total_completed_tasks: {int}
avg_completion_time: {double}
avg_task_length: {double}
avg_task_difficulty: {double}
avg_task_cost: {double}
...
}
是否有更好/更智能的方法来设计此类数据的状态。我考虑过的事情:
答案 0 :(得分:1)
如果您没有太多的卷,这可能会对性能造成问题,那么我建议您不要将汇总的统计数据具体化到表中,而是在//-Here I want my update like this--update({"_id":key},{$set:{field:values.value}});
return something;
表的顶部创建一个汇总的视图。这样,当您查询视图时就可以动态地动态计算聚合,而无需进行额外的聚合过程。
PostgreSQL中的示例:
task