MongoDB的。排序和过滤数据

时间:2016-01-05 12:20:29

标签: mongodb sorting filter

我在数据库中有两个集合 - "产品"和"类别"。

每个产品都与类别有关,可以继承子类别的产品,例如:

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,并且值是类别中的顺序。

有什么想法吗?

0 个答案:

没有答案