我正在尝试为销售衬衫的电子商务网店设计我的架构。我正在使用一个框架,它将根据从数据库中检索到的信息生成HTML视图(这样,如果有八种衬衫颜色,将显示八个不同的图片,如果其中一种颜色缺货,则不会秀等等)
所以,我的问题是:
网上商店主要围绕衬衫。有一个版本的衬衫(现在)和八种颜色。我打算只制作一个Mongoose Schema
,一个"Shirt"
架构,并在衬衫架构中包含所有信息。然而,似乎如果我想获得颜色的总数(这样我可以在每种颜色中显示一件衬衫),我将不得不遍历shirts
集合中的所有衬衫,并计算颜色。
这将涉及循环数千件衬衫,以确定是否所有8种颜色都有库存。
有更简单快捷的方法吗?
答案 0 :(得分: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 ]
绕过帮助程序并直接运行命令以查看有关如何运行distinct的信息:
> 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
}