2016-02-08 227 views
1
的NodeJS聚集

管道创建价格范围Wan't创建价格范围使用MongoDB的聚集管道.. 而采用弹性搜索或Solr的,我们可以直接得到价格过滤范围值...我怎样才能根据创建价格区间我的产品价格,如果在这个范围内没有商品,那么请不要与参数产品价格像flipkart OR myntra可用过滤器使用创建的范围......在蒙戈与

{ 
    "_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 
} 

从上面我要创建价格区间蒙戈聚合...

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

] 

回答

0

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)); 
}); 
+0

但要决定的愤怒像这里我们也可以手动添加分钟的价格和最高价格,但我想它自动 –

+0

@AsheshKhatri对不起,我没能在这里了解您的需求。我试图按照你在问题中给出的例子,并使用上面的管道产生了期望的结果,但是如果没有一个可靠的[最低可验证的例子],你试图做的事实上并不清楚(http://stackoverflow.com/帮助/ MCVE)。 – chridam

+0

我想产品价格的自动计算愤怒使用查询...我有产品收集来自我要计算产品的价格区间..像我们在电子商务网站@chridam –