【问题标题】:Reg: count data from mongo queryReg:统计来自 mongo 查询的数据
【发布时间】:2020-11-17 22:44:36
【问题描述】:

使用以下查询获取计数:

  db.agent.aggregate([
{ $match: {"$and": [{"eventId":{"$in": ["IP200","LAS201","LAS207","LAS201"]}},{"Uid":
   { "$in": db.agent.distinct("Uid",{"$and": [{"agentRole": {"$in": ["SW_TECH","SE_TECH","SF_TECH","MW_TECH"]}},
   {"loginLogoutTime":{"$gte": ISODate("2020-05-13T00:00:00.000-0400"),"$lt": ISODate("2020-05-13T23:59:59.999-0400")}} ]}) }
    },{"timeStamp": {"$gte": ISODate("2020-05-13T00:00:00.000-0400"),"$lt": ISODate("2020-05-13T23:59:59.999-0400")}}]}},
{ $group: {_id: {Dates: { $dateToString: { format: "%Y-%m-%d", date: "$timeStamp" }}, User: "$Uid" } , JOBCOUNT: {$addToSet: "$jobId"}}},
{ $project: {  "_id" : NumberInt(0),  "Uid" : "$_id.User", "Dates" : "$_id.Dates", "TotalJOB" : {$size:"$JOBCOUNT"} }}, 
])

它在输出中每页显示 50 条记录,但我们只需要总数来显示我们如何实现它。

【问题讨论】:

  • 提供soe样本数据

标签: mongodb mongodb-query


【解决方案1】:

假设您要计算在管道的最后阶段有多少文档。

只需添加一个 $count 阶段,例如

  db.agent.aggregate([
{ $match: {"$and": [{"eventId":{"$in": ["IP200","LAS201","LAS207","LAS201"]}},{"Uid":
   { "$in": db.agent.distinct("Uid",{"$and": [{"agentRole": {"$in": ["SW_TECH","SE_TECH","SF_TECH","MW_TECH"]}},
   {"loginLogoutTime":{"$gte": ISODate("2020-05-13T00:00:00.000-0400"),"$lt": ISODate("2020-05-13T23:59:59.999-0400")}} ]}) }
    },{"timeStamp": {"$gte": ISODate("2020-05-13T00:00:00.000-0400"),"$lt": ISODate("2020-05-13T23:59:59.999-0400")}}]}},
{ $group: {_id: {Dates: { $dateToString: { format: "%Y-%m-%d", date: "$timeStamp" }}, User: "$Uid" } , JOBCOUNT: {$addToSet: "$jobId"}}},
{ $project: {  "_id" : NumberInt(0),  "Uid" : "$_id.User", "Dates" : "$_id.Dates", "TotalJOB" : {$size:"$JOBCOUNT"} }}, 
{ $count: "Uid" }
])

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多