Finding highest value from sub-arrays in documents

后端 未结 3 1379
自闭症患者
自闭症患者 2020-12-17 21:48

Let say I have the following collection:

{ _id: 1, Array: [
  { K: \"A\", V: 8 },
  { K: \"B\", V: 5 },
  { K: \"C\", V: 13 } ] }

{ _id: 2, Array: [
  { K:          


        
相关标签:
3条回答
  • The following aggratation set returns what you need.

    db.letters.aggregate([
        {$project:{"Array.K":1, "Array.V":1}},
        {$unwind:"$Array"},
        {$sort:{"Array.V":-1}},
        {$limit:1}
    ]);
    

    Returns:

    {"_id":2, "Array":{"K":"E","V":14}}
    

    Enjoy! :)

    0 讨论(0)
  • 2020-12-17 22:33

    IN Simple Words , if you have mongo query Response something like below - and you want only highest value from Array-> "Wish_CreatedDate"

    {
      "_id": "57ee5a708e117c754915a2a2",
      "TotalWishs": 3,
      "Events": [
        "57f805c866bf62f12edb8024"
      ],
      "wish": [
        "Cosmic Eldorado  Mountain Bikes, 26-inch (Grey/White)",
        "Asics Men's Gel-Nimbus 18 Black, Snow and Fiery Red Running Shoes - 10 UK/India (45 EU) (11 US)",
        "Suunto Digital Black Dial Unisex Watch - SS018734000"
      ],
      "Wish_CreatedDate": [
        "2017-03-05T00:00:00.000Z",
        "2017-02-13T00:00:00.000Z"
      ],
      "UserDetails": [
        {
          "createdAt": "2016-09-30T12:28:32.773Z",
          "jeenesFriends": [
            "57edf8a96ad8f6ff453a384a",
            "57ee516c8e117c754915a26b",
            "58a1644b6c91d2af783770b0",
            "57ef4631b97d81824cf54795"
          ],
          "userImage": "user_profile/Male.png",
          "email": "roopak@small-screen.com",
          "fullName": "Roopak Kapoor"
        }
      ],
    
    },
    

    ***Then you have add

    Latest_Wish_CreatedDate: { $max: "$Wish_CreatedDate"},

    somthing like below-

    { 
                    $project : { _id: 1,
                                 TotalWishs : 1 ,
                                  wish:1 ,
                                   Events:1, 
                                   Wish_CreatedDate:1,
                                   Latest_Wish_CreatedDate: { $max: "$Wish_CreatedDate"},
                                } 
                } 
    

    And Final Query Response will be below

    {
      "_id": "57ee5a708e117c754915a2a2",
      "TotalWishs": 3,
      "Events": [
        "57f805c866bf62f12edb8024"
      ],
      "wish": [
        "Cosmic Eldorado  Mountain Bikes, 26-inch (Grey/White)",
        "Asics Men's Gel-Nimbus 18 Black, Snow and Fiery Red Running Shoes - 10 UK/India (45 EU) (11 US)",
        "Suunto Digital Black Dial Unisex Watch - SS018734000"
      ],
      "Wish_CreatedDate": [
        "2017-03-05T00:00:00.000Z",
        "2017-02-13T00:00:00.000Z"
      ],
      "UserDetails": [
        {
          "createdAt": "2016-09-30T12:28:32.773Z",
          "jeenesFriends": [
            "57edf8a96ad8f6ff453a384a",
            "57ee516c8e117c754915a26b",
            "58a1644b6c91d2af783770b0",
            "57ef4631b97d81824cf54795"
          ],
          "userImage": "user_profile/Male.png",
          "email": "roopak@small-screen.com",
          "fullName": "Roopak Kapoor"
        }
      ],
      "Latest_Wish_CreatedDate": "2017-03-05T00:00:00.000Z"
    },
    
    0 讨论(0)
  • 2020-12-17 22:48

    As @JohnnyHK said:

    db.col.aggregate([
        {$unwind: '$Array'},
        {$group: {_id: '$_id', Array: {K: {$max: '$K'}, V: {$max: '$V'}}}}
    ])
    

    Something like that.

    0 讨论(0)
提交回复
热议问题