我在数据库中有两个集合 - "产品"和"类别"。
每个产品都与类别有关,可以继承子类别的产品,例如:
Collection" category" (类别树):
{
"id": "1",
"name": "Category 1",
"parent": None,
"inherit": true, ...
}
{
"id": "2",
"name": "Subcategory 1",
"parent": "1", ...
}, ...
Collection" product":
{
"id": "3",
"name": "Product",
"categories": ["2"],
"price": 1000, ...
}, ...
我根据类别,价格和其他属性创建了包含产品过滤器的页面,我通过字段" name"," price"来实现了一些结果。那样:
products.find({"categories": {"$in": ["1", "2"]}, "price": {"$gte": 1000, "$lte": 5000}}).sort({"price": -1})
现在,我需要为每个类别手动设置产品的订单。 我怎样才能做到这一点?
此外,类别可能有超过10000种产品,但经过我想要的过滤后,过滤产品的顺序将在过滤之前保留,只有没有与过滤条件不匹配的产品。< / p>
我想我需要这样的东西,但我不确定: products.find({&#34; categories&#34;:{&#34; $ in&#34;:[&#34; 1&#34;,&#34; 2&#34;]},&#34;价格&#34;:{&#34; $ gte&#34;:1000,&#34; $ lte&#34;:5000}})。sort({&#34; category_order.1&#34;:1})
并在每个产品中添加dict {&#34; category_order&#34;:{&#34; 1&#34;:1,&#34; 2&#34;:1}},其中键是category_id,并且值是类别中的顺序。
有什么想法吗?