MongoDB和Mongoose的电子商务架构设计

时间:2015-02-23 03:04:07

标签: mongodb nosql

我正在尝试为销售衬衫的电子商务网店设计我的架构。我正在使用一个框架,它将根据从数据库中检索到的信息生成HTML视图(这样,如果有八种衬衫颜色,将显示八个不同的图片,如果其中一种颜色缺货,则不会秀等等)

所以,我的问题是:

网上商店主要围绕衬衫。有一个版本的衬衫(现在)和八种颜色。我打算只制作一个Mongoose Schema,一个"Shirt"架构,并在衬衫架构中包含所有信息。然而,似乎如果我想获得颜色的总数(这样我可以在每种颜色中显示一件衬衫),我将不得不遍历shirts集合中的所有衬衫,并计算颜色。

这将涉及循环数千件衬衫,以确定是否所有8种颜色都有库存。

有更简单快捷的方法吗?

1 个答案:

答案 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
}