如何在MongoDB中建模每日增量

时间:2012-12-10 11:26:48

标签: mongodb performance time-series nosql

我想在MongoDB中建模一些股票价格数据。从逻辑上讲,每个股票价格都有一个日期,股票名称和与之相关的价格。该应用程序的主要目标之一是模拟股票价格的每日变化。

我有两个与此问题相关的问题。

1)鉴于我将在其上运行的查询类型,在MongoDB中对这类数据进行建模的最佳方法是什么。

UPDATE !!!我做了一些实验,并决定对数据进行非规范化,并确保我有适当的列索引。我实际上没有看到在为我运行的查询类型嵌套数据方面存在任何性能差异,并且它使编写聚合例程的过程变得复杂。感谢Raxit的建议!

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之前,我认为以这种方式进行建模更改将是一个常见的常见用例,但到目前为止我还没有遇到任何类似的事情。

您可以给出的任何建议都非常有用。随着我自己的研究进展,我会更新帖子。

谢谢,

1 个答案:

答案 0 :(得分:1)

在上面两种情况下,您的嵌入式文档中的数据会被更改(添加)!

简单的结构怎么样? {stockname: '鲍勃',日期:日期1,价格:200} {stockname: '鲍勃',日期:DATE2,价格:220} 等?

甚至

{stockname:'bob',date:date2,price:200,lastdate:date1,pricedelta:(price2-price1)}