簡體   English   中英

MongoDB:如何設置集合版本?

[英]MongoDB: how to set collection version?

我目前正在使用MongoDB,並且有一個名為Product的集合。 我在系統中有一個要求,要求對收藏進行任何更改(例如添加新產品,刪除,更改價格等)時,增加收藏版本。

問題:是否有推薦的方法來設置MongoDB中集合的版本?

我期待找到這樣的東西:

db.collection.Product.setVersion("1.0.0");

和相應的get方法:

db.collection.Product.getVersion();

我不確定這是否有意義。 就個人而言,我很樂意將收集元數據作為MongoDB的本機實現提供。 有沒有這樣做的文檔數據庫?

MongoDB本身是完全“無模式的”,因此,它似乎沒有您想要的文檔“元數據”或常規“版本管理”的任何概念。 因此,一般的實現完全取決於您,文檔可以存儲您提供的所有內容。

您通常可以通過包裝方法以在更新中包括版本管理之類的方式來實現這種方案。 因此,在創建文檔時,您可以執行以下操作:

db.collection.myinsert({ "field": 1, "other": 2 })

包裹一個普通的插入來做到這一點:

db.collection.insert({ "field": 1, "other": 2, "__v": 0 })

具有該數據的任何“更新”都需要提供類似的包裝器。 所以這:

db.collection.myupdate({ "field": 1 },{ "$set": { "other": 4 } })

實際上檢查與保留的版本是否相同,並通過$inc同時“遞增”該版本:

db.collection.update(
    { "field": 1, "__v": 0 },
    {
        "$set": { "other": 4 },
        "$inc": { "__v": 1 }
    }
)

這意味着要在數據庫中修改的文檔需要與內存中的“版本”相匹配才能進行更新。 更改版本號意味着使用陳舊數據進行的后續更新將不會成功。

通常,雖然有多種對象文檔映射器或ODM實現可用於具有各種內置功能的各種語言。您最好查看文檔的“ 驅動程序”部分,以找到適合您的語言實現的內容。 另外,對MongoDB進行一些額外的閱讀也會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM