2012-04-23 60 views
0

我知道幾種在MongoDB服務器中對單個文檔進行版本控制的方法。但是,我希望添加單個文檔的版本控制和整個版本的版本控制。即如果文檔A從版本1變爲2,我還想知道什麼時候A處於版本2,哪些版本是文檔B,C,D等。MongoDB中文檔集的版本控制

這裏的基本目標是數據來源。假設我對一組文檔D有一個查詢Q,產生結果R.我想保存D + Q = R,所以當D變成D'因爲文檔已經改變,我有D'+ Q = R' 。

關於在MongoDB中這樣做的最佳策略的任何想法?我可以保留具有所有其他文檔版本的單獨文檔,但運行查詢的代價似乎非常高。我可以使用時間戳,而不是版本,這可能工作正常。 MongoDB中是否有這種支持,我不知道?

謝謝。

回答

0

在MongoDB中沒有像這樣的功能的特定支持,您必須在您的應用程序代碼中實現它。這聽起來像你有一個反規範化模式:R實際上是Q緩存,當D改變時你必須無效。您可以同步執行此失效,當您更新D中的任何文檔時,或者您可以安裝某個任務隊列(例如RabbitMQ)並在每次更改D時將任務插入該任務中,並讓後臺進程從隊列中提取任務。後臺進程會更新R.具體實現取決於您需要R如何一致。