【问题标题】:How to get count from aggregate lookup results [duplicate]如何从聚合查找结果中获取计数 [重复]
【发布时间】:2016-07-13 21:26:41
【问题描述】:

我希望从聚合连接中找出总文档数。是否可以从下面的代码中获得计数?如果有人有想法,请告诉我。

    db.collection("camp", function (err, camp) {
    camp.aggregate([{$match: {status: {$ne: "Rejected"}}}, 
         {'$lookup': {

                from: "organization",
                localField: "organization",
                foreignField: "organizationId",
                as: "orgnData"
            }
        }, {'$lookup': {
                from: "organizer",
                localField: "organizer",
                foreignField: "organizerId",
                as: "ornrData"
            }},
        {$unwind: "$orgnData"},
        {$unwind: "$ornrData"},
        {$match: {'ornrData.city': 'Nagpur'}},

        {$skip: 0}, {$limit: 10}, 
        {$sort: {id: -1}}

    ], function (err, info) {
        res.json(info);
    });
});

从上面的代码中,我希望在限制之前获得结果的总行数。如果有人有想法请告诉我?

【问题讨论】:

  • 您正试图在同一查询中获得“分页”计数。别这样,太傻了。我确信在某个地方对“为什么”有很好的解释。但是不应该太难计算出您需要将所有结果填充到单个文档中的数组中以获取计数,然后将其扩展为“页面”。只需运行一个单独的管道来“计数”,另一个管道用于页面中的“结果”。这就是我们多年来一直使用数据库分页的方式,并且没有改变。
  • 感谢您花费宝贵的时间@布雷克斯七
  • 我还在花钱。我对Get a count of total documents with MongoDB when using limit 上的回复不太满意,但至少确实做到了这一点。我以为我这样做了,或者其他人确实在这里具体提到了$push 问题,所以我仍在寻找参考。但实际上,只需运行一条管道即可获得结果,并运行一个简单的{ "_id": null, "count": { "$sum": 1 } } 以获得没有“跳过”和“限制”的总数。仍在寻找参考资料。
  • 我还在努力获取使用限制时的文档总数。我试过 { $group: { _id: null, count: { $sum: 1 } } } 通过使用这个我只得到计数,但我想要从集合中计数的完整数据。是否有任何过程可以通过这个获取数据?还有一件事是 $group 也需要更多时间来返回结果。请给我任何建议。

标签: mongodb mongodb-query


【解决方案1】:

将以下内容添加到聚合中,移除限制:

{ $group: { _id: null, count: { $sum: 1 } } }

【讨论】:

  • 感谢您的回复@DiegoRBaquero,通过使用 { $group: { _id: null, count: { $sum: 1 } } } 我只得到计数但我想要完整的数据与计数收藏品。有可能吗?
  • 然后统计所有从code返回的文件
猜你喜欢
  • 2020-06-25
  • 2020-07-18
  • 1970-01-01
  • 2021-07-01
  • 2021-07-26
  • 2019-04-09
  • 2020-09-21
  • 2020-04-19
  • 1970-01-01
相关资源
最近更新 更多