我想更改我的數據庫的模式。現在它是這樣的:如何使用具有高度動態模式的Mongoose MongoDB
{
"disp":[
{
"quantity":1,
"date":20141109
},
{
"quantity":1,
"date":20141110
},
{
"quantity":1,
"date":20141111
}
]
}
「日期」是唯一和索引。 像這樣的模式對我來說有一個很大的缺點。我無法以原子方式更新多個日期的「數量」,所以我必須在我的應用程序中實施Two Phase Commits。
我測試的替代模式,我覺得這人會滿足我的需求
{
"disp":{
"20141109": {
"quantity":1
},
"20141110": {
"quantity":1
},
"20141111": {
"quantity":1
}
}
}
這樣我可以原子一個以上的日期更新量,但我不知道如何與貓鼬的模式,因爲這種管理日期可以以高度動態的方式添加和刪除。 在集合中將會有很多文檔的數量爲不同日期指定 ex。一個文件可以只有幾個日期的數量,另一個文件可以有幾年的數量
是更好地添加/刪除字段迫使每個文件有一個日期字段(默認爲0數量)或是它最好將strict設置爲false? 有什麼缺點我不知道?
您的第二個模式格式無效。數組只能保存文檔或值。你的意思是'disp:{...}'? – BatScream 2014-12-03 08:44:29
@BatScream是的,我複製並粘貼沒有雙重檢查。感謝您指出 – Edo 2014-12-03 08:47:17
如果您有第二種格式,則不能根據日期執行聚合操作。最好不要有任何動態變量,並且可能在查詢選擇器中用作鍵。 – BatScream 2014-12-03 08:51:05