提问者:小点点

MongoDB:当没有聚合匹配条件时,如何在$facet中将$count默认为0


我正在处理一个复杂的分页聚合查询,我正在尝试了解Mongo是什么和不能做什么。我在这里遵循了这个问题,除了没有返回数据的时候,所有的工作都很好。

Mongo返回:{metadata:[],data:[]},但我想看看是否可以返回

{metadata:[{count:0}],data:[]}

以便前端处理更容易。到目前为止我还没能做到这一点。

下面是我正在使用的$facet管道的一个片段:

{
  "$facet": {
    "metadata": [{
      "$count": "total"
    }],
    "data": [{
      "$skip": 0
    }, {
      "$limit": 10
    }]
  }
}

当然,这可以在后端查询之后完成,但我确实希望Mongo来处理它。


共1个答案

匿名用户

您可以在元数据方面字段内使用$group而不是$count

  • $group_id:null执行,并使用$sum
  • total中获取总数
  {
    $facet: {
      metadata: [
        {
          $group: {
            _id: null,
            total: { $sum: 1 }
          }
        }
      ],
      data: [
        { $skip: 0 },
        { $limit: 10 }
      ]
    }
  }

操场