2015-02-23 79 views
0

我試圖爲銷售襯衫的電子商務網店設計我的架構。我正在使用一個框架,它將根據從數據庫中檢索到的信息生成HTML視圖(如果有八種襯衫顏色,則會顯示八種不同的圖片,如果其中一種顏色缺貨,它將不會秀等)針對MongoDB和Mongoose的電子商務架構設計

所以,我的問題是這樣的:

的網上商店周圍的襯衫主要旋轉。有一版襯衫(現在)和八種顏色。我打算只製作一個Mongoose Schema"Shirt"模式,並在襯衫模式中包含所有信息。但是,如果我想要獲得總數的顏色(以便我可以在每種顏色中顯示一件襯衫),我將不得不循環穿過shirts集合中的所有襯衫,並對顏色進行計數。

這將涉及循環成千上萬的襯衫,以確定是否所有8種顏色都有現貨。

有沒有更簡單快捷的方法來做到這一點?

回答

0

是。有一個distinct命令,如果你有襯衫顏色的指數可以有效地做到這一點:

> db.test.drop() 
> db.test.ensureIndex({ "color" : 1 }) 
> for (var i = 0; i < 10000; i++) db.test.insert({ "color" : i % 13 }) 
> db.test.distinct("color") 
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ] 

繞道助手,直接運行命令,看看如何在不同的已運行信息:

> db.runCommand ({ distinct: "test", key: "color" }) 
{ 
    "values" : [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ], 
    "stats" : { 
     "n" : 13, 
     "nscanned" : 13, 
     "nscannedObjects" : 0, 
     "timems" : 0, 
     "cursor" : "DistinctCursor" 
    }, 
    "ok" : 1 
}