【问题标题】:Mongo aggregate – return zero countMongo 聚合 - 返回零计数
【发布时间】:2020-12-29 10:32:46
【问题描述】:

我在 Mongo 的聚合函数方面需要你的帮助。

我有这样的聚合:

const likes = await this.aggregate([
  {
    $match: { post: postId },
  },
  {
    $group: {
      _id: '$likeType',
      count: { $sum: 1 },
    },
  },
]);

它收集帖子的所有喜欢/不喜欢并返回:

[ { _id: 'pos', count: 40 }, { _id: 'neg', count: 3 } ]

我遇到了一个问题:如果只有一种喜欢(例如只有 'pos'),它会返回:

[ { _id: 'pos', count: 40 } ]

但我也需要这个数组来显示零值:

[ { _id: 'pos', count: 40 }, { _id: 'neg', count: 0 } ]

有没有办法为所有类型的_ids设置默认值?

我知道它找不到任何“否定”并且无法返回它们。所以我想设置默认值让系统知道,只有两种类型:'pos'和'neg'。

这种情况有解决办法吗?

谢谢!

【问题讨论】:

    标签: javascript node.js mongodb mongoose mongoose-schema


    【解决方案1】:

    我的建议是:

    1. 获取不同的 ID:https://docs.mongodb.com/manual/reference/method/db.collection.distinct/
    2. 使用查询参数进行搜索。
    3. 过滤不是您的查询参数的不同 ID。将默认值附加到结果中。

    【讨论】:

    • 非常感谢您的帮助!我通过添加一个简单的 if...else 条件解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2016-02-17
    • 2020-05-02
    • 1970-01-01
    • 2014-10-04
    • 2017-04-14
    • 2017-06-25
    • 1970-01-01
    • 2016-03-23
    相关资源
    最近更新 更多