gpt4 book ai didi

node.js - 使用 Node Js 聚合管道在 mongodb 中创建价格范围

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:01 25 4
gpt4 key购买 nike

不想使用 mongodb 聚合管道创建价格范围..使用elasticsearch或solr时,我们可以直接获取价格过滤范围值...我如何根据我的产品价格创建价格范围,如果该范围内没有产品,则不要创建该范围...

{ 
"_id" : ObjectId("5657412ddb70397479575d1d"),"price" : 1200
},
{
"_id" : ObjectId("5657412ddb70397479575d1d"),"price" : 200
},
{
"_id" : ObjectId("5657412ddb70397479575d1d"),"price" : 2000
},
{
"_id" : ObjectId("5657412ddb70397479575d1d"),"price" : 2020
},
{
"_id" : ObjectId("5657412ddb70397479575d1d"),"price" : 100
},
{
"_id" : ObjectId("5657412ddb70397479575d1d"),"price" : 3500
},
{
"_id" : ObjectId("5657412ddb70397479575d1d"),"price" : 3900
}

从上面我必须创建价格范围作为标准产品价格,例如使用 Mongo 聚合在 Flipkart 或 myntra 中提供的过滤器...

[
{
range : '100-200',
count : 2
},
{
range : '1200-2020',
count : 3
},
{
range : '3500-3900',
count : 2
}

]

最佳答案

aggregation framework 管道,您可以利用$cond $project 中的运算符阶段创建一个额外的字段来表示价格所属的范围,然后使用 $group 获取计数的步骤:

var pipeline = [    
{
"$project": {
"price": 1,
"range": {
"$cond": [
{
"$and": [
{ "$gte": ["$price", 100] },
{ "$lte": ["$price", 200] }
]
},
"100-200",
{
"$cond": [
{
"$and": [
{ "$gte": ["$price", 1200] },
{ "$lte": ["$price", 2020] }
]
},
"1200-2020", "2021-above"
]
}
]
}
}
},
{
"$group": {
"_id": "$range",
"count": { "$sum": 1 }
}
},
{
"$project": {
"_id": 0,
"range": "$_id",
"count": 1

}
}
];

collection.aggregate(pipeline, function (err, result){
if (err) {/* Handle err */};
console.log(JSON.stringify(result, null, 4));
});

关于node.js - 使用 Node Js 聚合管道在 mongodb 中创建价格范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35269355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com