当前位置: 首页 > 知识库问答 >
问题:

如何在$addFields上获得聚合-$组计数结果?

晋承运
2023-03-14

我有以下疑问。

   db.Collection.aggregate([
  {
        "$match":{
            "index": 1
                 }
  },

  {
        "$addFields":{
            "DATE": $var1
            "array":"$array1
                     }
  }

])

这是查询的结果。

输出1

    {
        "DATE" : 181019
        "array" : 100,101,105,106,201,205,208,209
    }
...
...

我将得到一个$组结果。我将使用$array1。

    db.Collection.aggregate([
  {

        {
         $group:{
             "_id":"$array1",
             "count":{"$sum" : 1}
                }
        },

        {
        $sort: {"count" : -1}

        }


  }
])

输出

{
 "_id" : [
100,
101,
105,
106,
201,
205,
208,
209],

"count" : 4.0

}

“计数”结果将复制到所有结果上。

但是$组将创建一个糟糕的结构来读取所有数据。

如何将所有OUTPUT1与OUTPUT2的$组“count”合并?

     {
            "$addFields":{
                "DATE": $var1
                "array":"$array1
                "count": $count
                         }
      }

使用$组“count”,但我不想要$组结构。

   {
        "DATE" : 181019
        "array" : 100,101,105,106,201,205,208,209
        "count" : 4.0
    },
    {
        "DATE" : 181019
        "array" : 103,104,105,106,201,205,208,210
        "count" : 12.0
     }
...
...

共有1个答案

朱风史
2023-03-14

mongo group查询如何保留字段

我找到了我想要的。答案是$组技巧。

首先,将$addfield的查询转移到$group{query}。

其次,将{$first:{}}添加到$addfield的查询中,该查询将生成$addfield的查询$group查询。

$group:{
_id: $group_var,
name:{$first:{$addfield's query}}
"count": $count
}

这是放进去的结果。

 db.Collection.aggregate([
  {

        {
         $group:{
             "_id":"$array1",
             "array":{"$first":"$array1}
             "count":{"$sum" : 1}
                }
        },

        {
        $sort: {"count" : -1}

        }


  }
])
 类似资料:
  • 我需要获取数据库中的所有记录作为数组使用在教义中,我的查询是这样的 即使将水合模式设置为,我也会将结果作为对象 我犯了什么错误?

  • 我不熟悉Mongo中的聚合查询,并且一直在努力产生我想要的输出。我有以下聚合查询: 返回以下结果: 如何修改聚合查询,以便只返回2个文档而不是3个文档?将两个“ABC-123”结果合并为一个结果,并使用带有“bu”和“count”字段的新计数数组,即。 非常感谢

  • 在Elasticsearch中,您可以执行返回点击的搜索,同时在一个响应中返回与点击分开的聚合结果。这是非常强大和有效的,因为您可以运行查询和多个聚合,并一次获得两个(或其中一个)操作的结果,避免使用简洁和简化的API进行网络往返。 我想执行搜索,当我对聚合有查询时返回点击。但我不确定如何才能做到以上几点? 我正在使用以下查询:

  • 问题内容: 我只是在学习MySQL-是否有组合(或嵌套)聚合函数的方法? 给定一个查询: 这将给我每个用户回答的问题数量。我真正想要的是每个用户回答的平均问题数量…… 计算此统计信息的正确方法是什么? 如果有可能,是否有办法针对每个问题分解此统计信息?(用户可以多次回答相同的问题)。就像是: 问题答案: 您必须使用子查询: 您不能将一个聚合与另一个聚合一起包装。如果MySQL支持分析/排序/窗口功

  • 问题内容: 有一个对话列表,每个对话都有一个消息列表。每个消息都有一个不同的字段和一个字段。我们需要考虑的是,在对话的第一条消息中使用了动作,在几条消息中使用了动作之后,过了一会儿,依此类推(有一个聊天机器人意图列表)。 将对话的消息动作分组将类似于: 问题: 我需要使用ElasticSearch创建一个报告,该报告将返回每次会话的;接下来,我需要对类似的东西进行分组并添加一个计数;最终将导致as

  • 我有一个事件流,我想聚集基于时间窗口。我的解决方案提供增量聚合,而不是在定时窗口上提供聚合。我读到过,这对于stream来说是正常的,因为它会以更改日志的形式给出结果。另外,在研究过程中,我遇到了两步窗口聚合与Kafka Streams DSL和如何发送最终的kafka-streams聚合结果的时间窗口Ktable?.但是第一篇文章中的解决方案有些过时(使用不推荐的API)。我使用了在那些不推荐的