为了账号安全,请及时绑定邮箱和手机立即绑定

Mongodb Group 并从文档中获取其他字段

Mongodb Group 并从文档中获取其他字段

ABOUTYOU 2022-01-13 17:05:12
更新所以 Mohammad Faisal 有最好的解决方案。但是,当添加新文档时它会中断,哈哈!所以我从他的代码中学到了很多东西并对其进行了修改,它可以工作!=) 代码一直在底部。但这就是我所说的......所以我有这个文件{"_id":"5ddea2e44eb407059828d740","projectname":"wdym","username":"easy","likes":0,"link":["ssss"]}{"_id":"5ddea2e44eb407059822d740","projectname":"thechosenone","username":"easy","likes":30,"link":["ssss"]}{"_id":"5ddea2e44eb407059828d740","projectname":"thanos","username":"wiley","likes":10,"link":["ssss"]}基本上我想要的是包含最高赞及其相关项目名称的文档例如输出将是"projectname":"thechosenone","username":"easy","likes":30},{"projectname":"thanos","username":"wiley","likes":10,}我为此拥有的代码如下db    .collection("projects")    .aggregate([      {        $group: {          _id: { username: "$username" },          likes: { $max: "$likes" }        }      },      {        $project:{projectname:1}      }    ])$project 给了我一个奇怪的输出。但是,如果没有 $project,输出是正确的。但我想投影项目名称、用户和最高点赞数。谢谢你听我说:)
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

如果您不必使用 $group 这将解决您的问题:


db.projects.aggregate([

  {$sort:{likes:-1}},

  {$limit:1} 

]).pretty()

结果是


{

  "_id" : ObjectId("5ddee7f63cee7cdf247059db"),

  "projectname" : "thechosenone",

  "username" : "easy",

  "likes" : 30,

  "links" : ["ssss"]

}


查看完整回答
反对 回复 2022-01-13
?
www说

TA贡献1775条经验 获得超8个赞

试试这个:-


db.collection("projects").aggregate([

  {

    $group: {

      _id: { username: "$username" },

      likes: { $max: "$likes" },

      projectname: { $push : { $cond: [  { $max: "$likes" }, "$projectname", "" ]}}

    }

  }

  ,

  {

    $project:{

       username:"$_id.username",

       projectname:{"$reduce": {

            "input": "$projectname",

            "initialValue": { "$arrayElemAt": ["$projectname", 0] },

            "in": { "$cond": [{ "$ne": ["$$this", ""] }, "$$this", "$$value"] }

        }},

       likes:1

    }

  }

])


查看完整回答
反对 回复 2022-01-13
  • 2 回答
  • 0 关注
  • 509 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号