MongDb如何计算t个空字段,而另一个计算非空字段的数量呢?

杰伊·帕克(Jay Parkkk)
  1. 这两个字段分别命名为name_id和age_id。现在,我想查找一个没有两个字段的文档并计算总数。

  2. 下面是我尝试过的代码,但是没有用。

       db.user.aggregate([{ "$group": {
         "_id" : { user_id: "$key_id" },
         "requestA_count": { "$sum": {
             "$cond": [ { "$ifNull": [{"$name_id", false},{"$age_id",false}] }, 1, 0 ]
         } },
    
        { "$project": {
         "_id": 0,
         "requestA_count": 1,
    
     } }
     ])
    
GitGitBoom

我认为这就是您要寻找的。如果您要计算具有name_id或age_id的文档,只需更改$and为即可$or

https://mongoplayground.net/p/cuAVkYnLUTq

db.collection.aggregate([
  {$group: {
    _id: {
      // Group by bool, has both name_id and age_id
      hasIdAndAge: {
        $and: [
          {$toBool: "$name_id"},
          {$toBool: "$age_id"}
        ]
      }
    },
    // Count sum
    count: {$sum: 1}
  }},

  // Rework to only output one object with both counts
  {$group: {
    _id: null,
    has: {
      $sum: {$cond: [
        "$_id.hasIdAndAge", "$count", 0
      ]}
    },
    hasNot: {
      $sum: {$cond: [
        "$_id.hasIdAndAge", 0, "$count"
      ]}
    }
  }}
])

// Outputs
[
  {
    "_id": null,
    "has": 1,
    "hasNot": 4
  }
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将一个表与另一个表连接起来,然后计算非空列并将它们按其他两个字段分组?

如何在猫鼬投影中使用另一个计算字段创建一个计算字段?

如何选择非空值输入并隐藏输入并显示另一个输入呢?

如何根据另一个字段计算字段值?

OpenSQL中另一个表的计算字段

将空/空字段转换为另一个字段的值

如何引用在WHERE子句中计算的另一个字段?

JavaScript:如何根据另一个的插入值计算和更新输入字段值

如何基于从另一个TextBox输入的文本来实现计算字段?

如何从另一个模块行计算Many2one字段

计算某些字段后如何从另一个表创建新表

如何在另一个字段的计算中使用别名

如何计算 BigQuery Select 语句中另一个字段的出现次数?

如何从Oracle中的另一个表填充空字段?

根据另一个计算一个字段

在另一个表中计算表的一个字段

计算被另一个字段定义的窗口过滤的字段的总和

提升(Mongo)从另一个字段自动计算的记录字段

如果日期字段为空,那么如何比较另一个字段的日期

Rails - 如果另一个字段不为空,则验证字段

计算包含一个字段的文档数量

如何以与更改另一个输入字段相同的数量来更改一个输入字段?

如何设置一个javascript计算函数以等待,直到它在另一个字段中看到一个值

如果laravel中的另一个字段不为空,如何为一个字段制定验证规则

对于每个唯一的 Pandas 系列值,计算另一个字段

计算由另一个字段oracle sql数据库分组的每个字段中的非空白条目数

在计算中使用输入字段的值,并将结果显示在另一个元素中

SQL计算另一个表中的多个字段

Linq 使用 select new 中的值来计算另一个字段