我们有很多的产品,sku spu
一个spu下面有很多sku
我们的sku 是以颜色和尺码,这个一般涉及到服装
1.先按照分类id where 先按照一个字段(加入一个字段,这个字段是spu相同的各个产品用来获取显示优先级的,这个优先值最高的,会显示在分类中。)排序。
2.1我们按照spu进行聚合,得到列表值,得到总数
2.2我们按照spu进行聚合,然后按照销量,或者价格,或者名字进行排序,然后limit+skip 得到相应的数据
3.侧栏的按照 color size 等等其他的进行聚合得到各个个数
如果用户选择了颜色:
1.按照分类id,颜色进行where,然后按照字段排序
2. 1按照spu聚合,然后在聚合得到总数
2.2我们按照spu进行聚合,然后按照销量,或者价格,或者名字进行排序,然后limit+skip 得到相应的数据
3.侧栏的按照 color size 等等其他的进行聚合得到各个个数
mongodb实现:
得到总数:
db.erp_product_flat.aggregate( [ {$match: {"on_shelf_date_day":{"$gt":"2016-04-01"}}},{$group: { _id: "$spu",spu:{$first:"$spu"},sku:{$first:"$sku"},on_shelf_date_day:{$first:"$on_shelf_date_day"}} },{$group:{_id:null,total:{$sum:1}}},] );
得到产品列表:
db.erp_product_flat.aggregate( [ {$match: {"on_shelf_date_day":{"$gt":"2016-04-01"}}},{$sort:{spu:1,sku:1}},{$sort:{on_shelf_date_day:-1}} ] );
侧栏得到颜色的各个维度以及个数:
db.erp_product_flat.aggregate( [ {$match: {"on_shelf_date_day":{"$gt":"2016-04-01"}}},{$group: { _id: "$color",count:{$sum:1}} },] );
二:
原文链接:https://www.f2er.com/javaschema/283753.html