我有一些我想在MongoDB中建模的股票價格數據。邏輯上,每個股票價格都有一個日期,股票名稱和與之相關的價格。該應用程序的主要目的之一是模擬股票價格的每日變化。如何在MongoDB中建模每日增量
我有兩個問題與這個問題有關。
1)如果在MongoDB中對這類數據進行建模,我將在其上運行這種查詢,最好的方法是什麼?
更新!我做了一些實驗,並決定對數據進行非規範化處理,並確保我有適當的列索引。實際上,我沒有發現嵌套數據的性能差異,這是我正在運行的查詢類型的一部分,它使編寫聚合例程的過程變得複雜。感謝您的建議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之前,我曾假設用這種方式進行建模改變將是一個很不常見的用例,但到目前爲止,我還沒有遇到任何相似的事情。
你可以給任何建議是非常有用的。隨着我自己的研究進展,我會更新這篇文章。
謝謝,
馬特。
有固有於添加到嵌入的問題在MongoDB中收集?您非常正確的說,每當新數據進入時我都需要更新價格集合。在此應用程序中,寫入性能並不是優先考慮因素,因爲我打算一次性批量插入所有特定日期的庫存數據。主要關注於讀取性能,這就是爲什麼我在考慮嵌入。 – Sigmoidal
與我建議與適當的指數一起去。 –
我會嘗試這兩種方法,看看性能差異。如果嵌入時沒有巨大的性能優勢,我會按照您的建議去做。謝謝。 – Sigmoidal