Mongo db first groupby count无法显示

时间:2015-07-20 12:30:47

标签: mongodb mongodb-query

[
 { "$match": {  
     "created":{  
         "$gte": ISODate("2015-07-19T07:26:49.045Z")
     },
     "created":{  
         "$lte": ISODate("2015-07-20T07:37:56.045Z")
     }
 }},
 { "$group:{  
     "_id":{  
         "ln":"$l.ln",
         "cid":"$cid"
     },
     "appCount":{ "$sum": 1 }
 }},
 {  "$group": {  
     "_id": {  "ln":"$_id.ln" },
     "cusappCount": {  "$sum": 1 }
 }},
 {  "$sort":{ "_id.ln":1  } }
]

在上面的mongo db查询中,我无法在结果中显示appcount ..我能够显示cusappCount。有人可以帮我这个

1 个答案:

答案 0 :(得分:1)

$match 开头是错误的,并没有按照您的想法行事。它只选择" second"语句:

"created":{  
    "$lte": ISODate("2015-07-20T07:37:56.045Z")
 }

因此,您的选择不正确。

以下内容及其他更正:

[
    { "$match": {  
         "created": {  
             "$gte": ISODate("2015-07-19T07:26:49.045Z"),
             "$lte": ISODate("2015-07-20T07:37:56.045Z")
         }
     }},
     { "$group":{   
         "_id": {  
             "ln":"$l.ln",
             "cid":"$cid"
         },
         "appCount":{ "$sum": 1 }
     }},
     { "$group": {  
         "_id": "$_id.ln",
          "cusappCount": { "$sum": "$appCount" },
          "distinctCustCount": { "$sum": 1 }
     }},
     {  "$sort":{ "_id": 1  } }
]

这似乎是你想要做的。

所以你的更早期"计算"然后在更广泛的"分组时传递给$sum。水平。 "第二" count只适用于" distinct"早期密钥中的项目。

如果你想"保留" " appCount"的值,那么这里的问题是你的"分组"是"带走"显示在的详细程度。因此,对于它是什么,那么这就是你使用"数组"在输出结构中:

[
    { "$match": {  
         "created": {  
             "$gte": ISODate("2015-07-19T07:26:49.045Z"),
             "$lte": ISODate("2015-07-20T07:37:56.045Z")
         }
     }},
     { "$group":{   
         "_id": {  
             "ln":"$l.ln",
             "cid":"$cid"
         },
         "appCount":{ "$sum": 1 }
     }},
     { "$group": {  
         "_id": "$_id.ln",
          "cusappCount": { "$sum": 1 },
          "custs": { "$push": {
              "cid": "$_id.cid", "appCount": "$appCount" 
          }}
     }},
     {  "$sort":{ "_id": 1  } }
]