2016-01-22 74 views
0

我有一个在mongodb中的集合,其中我想运行查询以返回每个serviceType的最小值servicecost。相关的字段有:mongodb2.6不返回最小值

> db.vendor_master.find({},{"serviceType":1,"servicecost":1,"_id":0}) 
{ "serviceType" : "Florist", "servicecost" : 10000 } 
{ "serviceType" : "Florist", "servicecost" : 10000 } 
{ "serviceType" : "DJ", "servicecost" : 10000 } 
{ "serviceType" : "Florist", "servicecost" : 10000 } 
{ "serviceType" : "Florist", "servicecost" : 10000 } 
{ "serviceType" : "Decorator", "servicecost" : 10000 } 
{ "serviceType" : "Decorator", "servicecost" : 10000 } 
{ "serviceType" : "Decorator", "servicecost" : 12000 } 
{ "serviceType" : "Pandit", "servicecost" : 3500 } 
{ "serviceType" : "Pandit", "servicecost" : 1000 } 
{ "serviceType" : "Pandit", "servicecost" : 5000 } 
{ "serviceType" : "Pandit", "servicecost" : 1000 } 
{ "serviceType" : "Florist", "servicecost" : 10000 } 
{ "serviceType" : "DJ", "servicecost" : 10000 } 
{ "serviceType" : "DJ", "servicecost" : 10000 } 
{ "serviceType" : "DJ", "servicecost" : 10000 } 
{ "serviceType" : "DJ", "servicecost" : 10000 } 
{ "serviceType" : "Band", "servicecost" : 1000 } 
{ "serviceType" : "Band", "servicecost" : 50000 } 
{ "serviceType" : "Band", "servicecost" : 152500 } 
{ "serviceType" : "Decorator", "servicecost" : 2000 } 
{ "serviceType" : "Decorator", "servicecost" : 25000 } 
{ "serviceType" : "Pandit", "servicecost" : 1000 } 
{ "serviceType" : "Band", "servicecost" : 12500 } 
{ "serviceType" : "Band", "servicecost" : 15000 } 

我想下面的查询

db.vendor_master.aggregate([{$group:{_id:"serviceType",mincost:{$min:"servicecost"}}}]) 

输出为:

{ "_id" : "serviceType", "mincost" : "servicecost" } 

预期的输出应该是每个serviceType最小servicecost

任何想法我错过了什么?

由于

回答

0

$min需要一个表达式作为其操作数。

{ $min: <expression> } 

和表达必须用美元符号$前缀作为documentation提到:

聚集表达式中使用field path访问输入文档领域。要指定字段路径,请使用以美元符号为前缀的字符串$字段名称或带点字段名称(如果该字段位于嵌入式文档中)。

db.vendor_master.aggregate([ 
    { "$group": { 
     "_id": "serviceType", 
     "mincost": { "$min": "$servicecost" } 
    }} 
])