我希望将不带“ SENT”作为名称的名称总数作为状态,并且我也想根据开始和结束的日期来过滤此数字,目前只有第一部分走了,它标记了按日期过滤。我的字段称为“日期”。 抱歉,我的代码未缩进):
db.name.aggregate([{ $group: {_id:"$id", sent:
{$max: {$cond: {if: {
$eq: [ "$status", "SENT" ] }, then: 1, else: 0}}} } },
{ $match: { sent:
0 } }, {$count: "total"}])
答案 0 :(得分:1)
您可以重写查询以将$match
添加为第一阶段,并在日期和状态过滤器之后加上$count
阶段以对匹配的文档进行计数。
类似
db.name.aggregate([
{"$match": {"status":"SENT","date":{"$gte":input date1, "$lte":input date2} }
{"$count": "total"}
])
您不需要为请求进行汇总。您可以使用常规查询。
db.name.count({"status":"SENT","date":{"$gte":input date1, "$lte":input date2} })