我有一些要在 MongoDB 中建模的股票价格数据。从逻辑上讲,每个股票价格都有一个日期、股票名称和与之相关的价格。该应用程序的主要目的之一是模拟股票价格的每日变化。
我有两个与此问题相关的问题。
1) 考虑到我将在其上运行的查询类型,在 MongoDB 中对此类数据进行建模的最佳方法是什么。
更新!!!我做了一些实验,并决定对数据进行非规范化并确保我有适当的列索引。我实际上并没有看到嵌套我正在运行的查询类型的数据的任何性能差异,并且它使编写聚合例程的过程变得复杂。感谢拉克西特的建议!
2) 给定 1) 在 MongoDB 中编写这些每日更改样式查询的最佳方法是什么?
因此,从现在开始,我每个日期和库存都有一份文件。
{
{"stock":"Bob",
"date":"2012-12-01",
"price":99.99
},
{"stock":"Bob",
"date":"2012-12-02",
"price":99.99
},
{"stock":"Bob",
"date":"2012-12-03",
"price":99.99
},
{"stock":"Ted",
"date":"2012-12-01",
"price":99.99
},
{"stock":"Ted",
"date":"2012-12-02",
"price":99.99
},
{"stock":"Ted",
"date":"2012-12-03",
"price":99.99
},
.
.
.
}
我对2的看法:
我想生成显示股票价格每日变化的报告。考虑到文档大小的限制,我可能需要将其拆分为每只股票和每年的增量或其他内容,但这更多是实现细节。本质上,我想输出以下形式的文档:
{
{"stock":"Bob",
"prices": {[{"fromDate":"2012-12-01","toDate":"2012-12-02","delta":-1.0},
{"fromDate":"2012-12-02","toDate":"2012-12-03","delta":-1.0},
.
.
.]}
},
{"stock":"Ted",
"prices": {[{"fromDate":"2012-12-01","toDate":"2012-12-02","delta":1.0},
{"fromDate":"2012-12-02","toDate":"2012-12-03","delta":1.0},
.
.
.]}
},
.
.
.
}
理想情况下,我希望能够临时返回这些数据。我很确定这可以使用 map-reduce 来完成,但我想知道是否有办法使用新的聚合框架来做到这一点?在我开始研究 mongodb 之前,我假设以这种方式进行建模更改将是一个失败的常见用例,但到目前为止,我还没有遇到过类似的情况。
您可以提供的任何建议都将非常有用。随着我自己的研究进展,我会更新这篇文章。
谢谢,
马特。