2015-02-23 39 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 
}