我试图使用用户id和服务状态来总结用户已完成的服务总量。我的收藏如下:
[
{
_id: '5543333',
title: 'service 1',
description: 'des 1',
status: 'completed',
amount: 3000,
user_id: '1',
},
{
_id: '5543563',
title: 'service 2',
description: 'des 2',
status: 'in progress',
amount: 5000,
user_id: '1',
},
{
_id: '5542933',
title: 'service 3',
description: 'des 3',
status: 'completed',
amount: 4000,
user_id: '1',
},
];
预期结果:[{总数:7000}]
我所尝试的:
db.services.aggregate([
{
$group: {
_id: '',
price: {
$sum: {
$cond: [
{
$and: [
{ $eq: ['$status', 'completed'] },
{ $eq: ['$user_id', user.id] },
],
},
'$price',
0,
],
},
},
},
},
{
$project: {
_id: 0,
total: '$price',
},
},
]);
我得到的结果:[{total:0}]
我的观察:它只适用于一种情况,而不是多种情况。
1条答案
按热度按时间dsekswqp1#
您可以先按状态筛选,然后按用户id分组。
工作场地