【问题标题】:What does "1" says in group aggregation?“1”在组聚合中表示什么?
【发布时间】:2013-03-18 09:58:20
【问题描述】:

在以下示例 (http://docs.mongodb.org/manual/reference/aggregation/group/#_S_group) 中有一个源示例:

db.article.aggregate(
    { $group : {
        _id : "$author",
        docsPerAuthor : { $sum : 1 }, // here goes the question
        viewsPerAuthor : { $sum : "$pageViews" }
    }}
);

我的问题是:1 实际上指的是什么(哪个字段)?可以改写什么?例如可以是$author 吗?

而且,一般来说 - 我应该如何“阅读”这个:viewsPerAuthor : { $sum : "$pageViews" } - “viewsPerAuthor 是 pageViews 的总和”

【问题讨论】:

  • 如果没有设置字段,则表示 $inc 加一或从一开始。
  • 如果是这样,下一行中的$pageViews 是什么意思?这令人困惑。
  • 这意味着对名为 pageViews 的字段求和,因此您可以总结一个字段,也可以只计算该字段在一个组中聚合的次数,或者在 SQL @ 987654328@
  • 我认为最好将此线程列为答案 - 我会批准它:)

标签: mongodb aggregation-framework


【解决方案1】:

让我们一点一点来:

docsPerAuthor : { $sum : 1 },

意味着为该组中的每个文档(每个作者)创建一个名为 docsPerAuthor 的新字段,然后将其设置为 1 $inc 或将其初始字段值设置为 1

viewsPerAuthor : { $sum : "$pageViews" }

表示对于该组中的每个文档,汇总与该特定组匹配的文档的pageViews 字段。

基本相同:

SELECT COUNT(*) as docsPerAuthor, SUM(pageViews) AS viewsPerAuthor 
       FROM article GROUP BY author

【讨论】:

    猜你喜欢
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多