【问题标题】:Grouping by first value and ordering descendingly in MongoDB在MongoDB中按第一个值分组并降序排列
【发布时间】:2020-05-04 23:09:53
【问题描述】:

您能否确认正确的查询,以按帐户名称和每个帐户的关注者的第一个值显示帐户表,按关注者数量降序排列?

MongoDB 集合称为“推文”。

集合中的每个文档都代表一条推文。

请找到其中一个 JSON 格式的文档(推文)here

我尝试了以下查询:

    db.tweets.aggregate(
       [
           {
        $sort: {
          name: -1
        }
      },
      {
        $sort: {
          followers_count: 1
        }
      },

         {
           $group:
             {
               _id: "$user.name",
               followers: { $first: "$user.followers_count" }
               }
         }
       ]
    )

但是,它不是根据每个帐户的关注者数量对帐户进行降序排列:

/* 1 */
{
    "_id" : "Salud_Ec",
    "followers" : 423528
}

/* 2 */
{
    "_id" : "EUPHA",
    "followers" : 4981
}

/* 3 */
{
    "_id" : "MSF International",
    "followers" : 145265
}

/* 4 */
{
    "_id" : "Ministerio de Sanidad",
    "followers" : 501492
}

/* 5 */
{
    "_id" : "NHS",
    "followers" : 479038
}

/* 6 */
{
    "_id" : "World Health Organization (WHO)",
    "followers" : 7668030
}

/* 7 */
{
    "_id" : "HHS.gov",
    "followers" : 945901
}

所需的输出是 WHO 帐户在顶部,EUPHA 帐户在底部。

谢谢。

【问题讨论】:

  • 请添加所需的输出?
  • 当然。所需的输出是将 WHO 帐户放在顶部,将 EUPHA 帐户放在底部。

标签: mongodb mongodb-query


【解决方案1】:

上面的查询几乎是正确的,只需在分组后调整排序阶段!

 db.tweets.aggregate(
       [
           {
        $sort: {
          name: -1
        }
      },
      {
           $group:
             {
               _id: "$user.name",
               followers: { $first: "$user.followers_count" }
               }
         }, 
      {
        $sort: {
          followers: -1
        }
      },


       ]
    )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    相关资源
    最近更新 更多