我們正在嘗試創建對MangoDB的調用以接收產品的所有可能過濾器。Mongo DB中的分面過濾器帶有多個選項的產品
我將嘗試創建例如我們的產品
第一款產品是有兩個選擇,選擇阿迪達斯鞋 - 顏色和大小。但對於不同的顏色,你有不同的尺寸。
{
id: 1
name: "Adidas Shoes",
filters: [
[
{
code: "brand",
value: "Adidas"
},
{
code: "colour",
value: "white"
},
{
code: "size",
value: 41
}
],
[
{
code: "brand",
value: "Adidas"
},
{
code: "colour",
value: "white"
},
{
code: "size",
value: 42
}
],
[
{
code: "brand",
value: "Adidas"
},
{
code: "colour",
value: "white"
},
{
code: "size",
value: 43
}
],
[
{
code: "brand",
value: "Adidas"
},
{
code: "colour",
value: "blue"
},
{
code: "size",
value: 41
}
],
[
{
code: "brand",
value: "Adidas"
},
{
code: "colour",
value: "blue"
},
{
code: "size",
value: 44
}
]
]
}
第二個產品是耐克鞋。
{
id: 2
name: "Nike Shoes",
filters: [
[
{
code: "brand",
value: "Nike",
},
{
code: "colour",
value: "white",
},
{
code: "size",
value: 41,
}
],
[
{
code: "brand",
value: "Nike",
},
{
code: "colour",
value: "white",
},
{
code: "size",
value: 42,
}
],
[
{
code: "brand",
value: "Nike",
},
{
code: "colour",
value: "green",
},
{
code: "size",
value: 41,
}
]
]
}
而且Reebook鞋
{
id: 3
name: "Reebook Shoes",
filters: [
[
{
code: "brand",
value: "Reebook",
},
{
code: "colour",
value: "black",
},
{
code: "size",
value: 41,
}
]
]
}
,你可以看到選項大小取決於顏色和顏色取決於大小。
我們如何創建MongoDb.aggregate以擁有所有可能的過濾器?
品牌:阿迪達斯(1),耐克(1),Reebook(1)
尺寸: 41(3),42(2),43(1),44(1)
顏色:白(2),藍色(1),綠(1),黑色(1)
,並呼籲應是獨立的多少和過濾器,我們有(產品一種選擇,產品有更多的選擇和不同的過濾器)。你能解釋一下在這種情況下如何使用$ group,$ unwind嗎?以後我們如何通過$ facet改進它?
非常感謝!
編輯2017年2月10日
樣本響應
facets: [
{
code: "brand",
values: [
{
name: "Adidas",
count: 1
},
{
name: "Nike",
count: 1
},
{
name: "Reebook",
count: 1
}
]
},
{
code: "size",
values: [
{
name: 41,
count: 3
},
{
name: 42,
count: 2
},
{
name: 43,
count: 1
},
{
name: 44,
count: 1
}
]
},
{
code: "colour",
values: [
{
name: "White",
count: 2
},
{
name: "Blue",
count: 1
},
{
name: "Green",
count: 1
},
{
name: "Black",
count: 1
}
]
}
]
或
facets: {
"brand": {
"Adidas": 1,
"Nike":1,
"Reebook":1
},
"size": {
"41": 3,
"42":2,
"43":1,
"44":1
},
"colour": {
"White": 2,
"Blue":1,
"Green":1,
"Black":1
}
}
這是我們的第一個階段。下一步將是如何在我選擇尺寸:41和顏色:白色時搜索可能的濾鏡。
謝謝
能告訴你,你想獲得一個樣本響應?我試圖瞭解顏色和大小之間的依賴關係如何影響響應以及它的外觀。 –
@AntonioNarkevich 我添加了對原始 – Rastislav