Node.js 每天计算价值。帮帮我,我';我是新手

Node.js 每天计算价值。帮帮我,我';我是新手,node.js,mongodb,Node.js,Mongodb,我如何查询mongodb是否如此。。谢谢 { status: A date: 1/1 }, { status: A date: 1/1 } { status: B date: 1/1 } { status: B date: 2/1 } { status: B date: 5/1 } 结果: { date: 1/1, statusA: 2, statusB: 1 } {

我如何查询mongodb是否如此。。谢谢

{
    status: A
    date: 1/1
},
{
    status: A
    date: 1/1
}
{
    status: B
    date: 1/1
}
{
    status: B
    date: 2/1
}
{
    status: B
    date: 5/1
}
结果:

 {
     date: 1/1,
     statusA: 2,
     statusB: 1
 }
  {
     date: 2/1,
     statusA: 0,
     statusB: 1
 }
  {
     date: 3/1,
     statusA: 0,
     statusB: 0
 }  {
     date: 4/1,
     statusA: 0,
     statusB: 0
 } 
 {
     date: 5/1,
     statusA: 0,
     statusB: 1
 }

您可以使用
$group

db.collection.aggregate([
  {
    $group: {
      _id: "$date",
      statusA: {
        $sum: {
          $cond: [
            { $eq: [ "$status","A"] },
            1,
            0
          ]
        }
      },
      statusB: {
        $sum: {
          $cond: [
            { $eq: [ "$status", "B" ]},
            1,
            0
          ]
        }
      }
    }
  }
])

工作

您可以使用
聚合
管道API:

  • 根据
    日期对
    元素分组
    ,同时根据
    $eq
    条件结果,使用
    $sum
    1或0对状态A/B进行计数
  • 然后
    project
    根据
    日期将结果重命名为
    \u id
    (正如您在示例中所预期的那样)
  • db.collection.aggregate()
    .组({
    _id:“$date”,
    状态a:{$sum:
    {$cond:[{$eq:[“$status”,“A”]},1,0]}
    },
    状态B:{$sum:
    {$cond:[{$eq:[“$status”,“B”]},1,0]}
    }
    })
    .项目({
    日期:“$\u id”,
    状态A:1,
    状态B:1,
    _身份证号码:0
    });
    
    您的答案很好,但如何获取其缺少的天数和空值。?谢谢你的回答很好,但是我怎么才能得到它缺失的天数和空值呢。?谢谢你没有显示任何缺失或空值