我有一个收集 products
,其中包含如下这样的文档(即产品)(只提供相关代码):
{ "_id": "prod1", ... "colors": ["red","blue"], "size": ["S", "M"], ...}
{ "_id": "prod2", ... "colors": ["red","green"], "size": ["S", "XL"], ...}
{ "_id": "prod3", ... "colors": ["yellow","blue"], "size": ["XL", "XXL"], ...}
我希望能够提供给用户可用选择,如面向搜索的方式,展示选项名称和可用选项数量。
颜色:
red 2
blue 2
green 1
yellow 1
尺寸:
S 2
M 1
XL 2
XXL 1
如果我必须使用SQL完成这个任务,我可能需要为每个分面组运行一个查询。
SELECT colors, count(*) AS number FROM products GROUP BY colors
比第二个查询更优。
SELECT size, count(*) AS number FROM test GROUP BY sizes
如果有人选择了“红色”,那么我可能需要向每个查询添加“WHERE”子句:
WHERE colors = 'red'
有比我经验更丰富的人可以帮助我解决这个在MongoDB中的例子吗?我需要运行两个查询还是我缺少什么而只需要运行一个查询?我假设我会有大量的产品。任何帮助都将不胜感激。特别是如果有任何加速的技巧。我想一开始就把它做对,因此提出了这个问题。谢谢。