我想通过按日期过滤mongodb中进行搜索

时间:2018-07-16 15:19:30

标签: database mongodb mongoose

我希望将不带“ SENT”作为名称的名称总数作为状态,并且我也想根据开始和结束的日期来过滤此数字,目前只有第一部分走了,它标记了按日期过滤。我的字段称为“日期”。 抱歉,我的代码未缩进):

db.name.aggregate([{ $group: {_id:"$id", sent: 
{$max: {$cond: {if: { 
$eq: [ "$status", "SENT" ] }, then: 1, else: 0}}} } },
{ $match: { sent: 
0 } }, {$count: "total"}])

1 个答案:

答案 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} })