Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB。对数据进行排序和筛选_Mongodb_Sorting_Filter - Fatal编程技术网

MongoDB。对数据进行排序和筛选

MongoDB。对数据进行排序和筛选,mongodb,sorting,filter,Mongodb,Sorting,Filter,我在数据库中有两个集合——“产品”和“类别” 每个产品都与类别相关,可以继承子类别的产品,例如: 集合“类别”(类别树): 收藏“产品”: 我创建了一个页面,按类别、价格和其他属性筛选产品,并实现了按字段“名称”、“价格”排序的结果,如: products.find({"categories": {"$in": ["1", "2"]}, "price": {"$gte": 1000, "$lte": 5000}}).sort({"price": -1}) 现在,我需要手动设置每个类别的产品订单

我在数据库中有两个集合——“产品”和“类别”

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

集合“类别”(类别树):

收藏“产品”:

我创建了一个页面,按类别、价格和其他属性筛选产品,并实现了按字段“名称”、“价格”排序的结果,如:

products.find({"categories": {"$in": ["1", "2"]}, "price": {"$gte": 1000, "$lte": 5000}}).sort({"price": -1})
现在,我需要手动设置每个类别的产品订单。 我该怎么做

此外,类别可能有10000多个产品,但在过滤后,我希望过滤后的产品顺序将保持过滤前的顺序,只有不符合过滤条件的产品


我想我需要这样的东西,但我不确定: products.find({“categories”:{“$in”:[“1”,“2”]},“price”:{“$gte”:1000,$lte:5000}})。sort({“category_order.1”:1})

在每个产品中添加dict{“category_order”:{“1”:1,“2”:1},其中键是category_id,值是category中的order

有什么想法吗

{
    "id": "3",
    "name": "Product",
    "categories": ["2"],
    "price": 1000, ...
}, ...
products.find({"categories": {"$in": ["1", "2"]}, "price": {"$gte": 1000, "$lte": 5000}}).sort({"price": -1})