我正在使用MongoDB而且我对它很陌生,所以我希望你能帮助我建模数据。什么是最有效的方式?
这是我的用例。
假设我有三个收入来源,名为Income1,Income2,Income3。明天他们可能是4或20.每个新的收入来源都会假设要实施新的整合。
假设我有十个用户,名为User1,User2 ... User10。明天他们可能是1000.(我希望;-))。在这里,新用户不需要集成。
让我们说我有兴趣每天存储用户1从Income1,Income2,... User2从Income1,Income2 ......获得多少钱等等。甚至有一天我会聚集所有这些。
还在跟着我?
我该如何塑造这个?
第一个想法:分开收藏和单独的文件
3收藏:收入1,收入2,收入3。如果收入4出现,没问题,因为我将不得不添加一些代码,我也可以创建一个新的集合。这不是问题。
在每个集合中,用户的数据,每个用户和每个日期都有一个文档,如下所示:
Income 1
{name:'user1', date:'2014-12-07',money:'24.32'}
{name:'user1', date:'2014-12-08',money:'14.20'}
{name:'user2', date:'2014-12-07',money:'0.00'}
{name:'user2', date:'2014-12-08',money:'0.00'}
{name:'user2', date:'2014-12-09',money:'10.00'}
{name:'user3', date:'2014-12-09',money:'124.32'}
Income 2
{name:'user1', date:'2014-12-05',money:'4.00'}
{name:'user2', date:'2014-12-06',money:'0.20'}
第二个想法:单独的集合,以及相同的文档+嵌入式文档
3收藏与以前一样。在每个集合中,用户的数据,每个用户一个文档:
Income 1
{name:'user1', incomes:
[{date:'2014-12-07',money:'24.32'},{date:'2014-12-08',money:'14.20'}]}
{name:'user2', incomes:
[{date:'2014-12-07',money:'0.00'},{date:'2014-12-08',money:'0.00'},{date:'2014-12-09',money:'10.00'}]}
{name:'user3', incomes:
[{date:'2014-12-09',money:'124.32'}]}
Income 2
{name:'user1', incomes: [{date:'2014-12-05',money:'4.00'}]}
{name:'user2', incomes:[{date:'2014-12-06',money:'0.20'}]}
第三个想法:SAme收集,以及每个人的单独文件。
{income_type:1,name:'user1', date:'2014-12-07',money:'24.32'}
{income_type:1,name:'user1', date:'2014-12-08',money:'14.20'}
{income_type:1,name:'user2', date:'2014-12-07',money:'0.00'}
{income_type:1,name:'user2', date:'2014-12-08',money:'0.00'}
{income_type:1,name:'user2', date:'2014-12-09',money:'10.00'}
{income_type:1,name:'user3', date:'2014-12-09',money:'124.32'}
{income_type:2,name:'user1', date:'2014-12-05',money:'4.00'}
{income_type:2,name:'user2', date:'2014-12-06',money:'0.20'}
这些是一些想法。我确定还有其他人。
我经常需要根据最近的文件(即最近的日期)查询每个用户。我可能不时需要每周,每月汇总信息....最后,我想我会从每晚运行的cron更新表格(为每个收入来源和用户添加相应的收入)< / p> 这是否清楚?我来自关系数据库背景(它是如此明显吗?)所以也许有一些我甚至没有考虑过的事情。
提前致谢。