每天计算值。帮帮我,我是新手



我如何查询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
]
}
}
}
}
])

Working Mongo playground

您可以使用aggregate管道API:

  1. group元素通过date计数statusA/B时使用$sum1或0取决于$eq条件的结果
  2. 然后project结果将_id重命名为date(如您在示例中所期望的)
db.collection.aggregate()
.group({
_id: "$date",
statusA: { $sum: 
{ $cond: [{ $eq: [ "$status", "A" ]}, 1, 0 ]}
},
statusB: { $sum: 
{ $cond: [{ $eq: [ "$status", "B" ]}, 1, 0 ]}
}
})
.project({
date: "$_id",
statusA: 1,
statusB: 1,
_id: 0
});

相关内容

最新更新