點讚列表,點讚使用者的暱稱,頭像;
資料查詢則相對簡單:
跟據上面的內容,先來乙個非常非常"樸素"的設計:
,
"100011": ,
"100012":
},"comment_list": [
"100013",
"100014"
],"comment_ref_obj": ,
"100014":
}}
可以看到,comment_ref_obj
與praise_ref_obj
兩個字段,有非常重的關係型資料庫痕跡,猜測,這個系統之前應該是放在了普通的關係型資料庫上,或者設計者被關係型資料庫的影響較深。而在mongodb這種文件型資料庫裡,實際上是沒有必要這樣去設計,這種建模只造成了多於的資料冗餘。
根據這幾個問題,重新做了優化的設計建議。
,
]}
對比可以看到,整個結構要小了幾個數量級,並且可以發現url,usrname資訊都全部不見了。那這樣的需求應該如何去實現呢?
從業務抽象上來說,url,username這類資訊實際上是非常穩定的,不會發生特別大的頻繁變化。並且這兩類資訊實際上都應該是跟uid繫結的,每個uid含有指定的url,username。是最簡單的key,value模型。所以,這類資訊非常適合做一層快取加速讀取查詢。
mongodb的文件模型固然強大,但絕對不是等同於關係型資料庫的粗暴聚合,而是要考慮需求和業務,合理的設計。有些人在設計時,也會被文件模型誤導,三七二十一一股腦的把資訊塞到乙個文件中。反而最後會帶來各種使用問題。
MongoDB資料建模小案例 物聯網時序資料庫建模
注 本案例來自mongodb官方教程ppt,也是乙個非常典型的case,故此翻譯,並結合當前mongodb版本做了一些內容上的更新。本案例非常適合與iot場景的資料採集,結合mongodb的sharding能力,文件資料結構等優點,可以非常好的解決物聯網使用場景。案例背景是來自真實的業務,美國州際公...
vuex小案例 元件共用資料
將state中的資料做一些集中處理,用map遍歷陣列中每乙個資料做處理 將state作為引數傳入,可以直接使用遍歷等 getters return saleproducts payload作為引數被傳入使用的元件,items.price payload payload傳幾就減幾 mutations ...
把CRUD 案例改為MongoDB 資料庫版本
之前基於express寫的案例是檔案格式,現在連線mongodb 資料庫 對原案例進行修改。主要就是student.js 修改如下 ar mongoose require mongoose mongoose.connect mongodb localhost itcast var schema mo...