복붙노트

[MONGODB] 컬렉션에서 최대 값을 얻는 방법을 MongoDB를

MONGODB

컬렉션에서 최대 값을 얻는 방법을 MongoDB를

나는 MongoDB의 수집 등이있다 :

db.kids.find()
//results
[
    {name:'tom', age:10},
    {name:'alice', age:12},
    ....
]

나는이 컬렉션에서 MAX '나이'를 얻기 위해 질의를 필요로 SQL처럼 : 아이 WHERE 1 FROM SELECT MAX (나이)

해결법

  1. ==============================

    1.의견의 하나로서 :

    의견의 하나로서 :

    db.collection.find().sort({age:-1}).limit(1) // for MAX
    db.collection.find().sort({age:+1}).limit(1) // for MIN
    

    완전히 사용할 수있어하지만 난 성능에 대한 확실하지 않다

  2. ==============================

    2.제안 된 대답의 성능은 괜찮습니다. MongoDB를 문서에 따르면 :

    제안 된 대답의 성능은 괜찮습니다. MongoDB를 문서에 따르면 :

  3. ==============================

    3.총 프레임 워크를 사용하는 방법에 대해 무엇을 :

    총 프레임 워크를 사용하는 방법에 대해 무엇을 :

    db.collection.aggregate({ $group : { _id: null, max: { $max : "$age" }}});
    
  4. ==============================

    4.사람들은 당신은 최적화 프로그램이 계획을 실행하여 무엇을하고 있는지 볼 수 있습니다. 계획에 보는 일반적인 형식은 MongoDB의 문서에서입니다. 즉 Cursor.plan (). 당신이 정말로 파고하려면 더 깊은 당신은 더 많은 세부 사항에 대한 cursor.plan (true)를 할 수 있습니다.

    사람들은 당신은 최적화 프로그램이 계획을 실행하여 무엇을하고 있는지 볼 수 있습니다. 계획에 보는 일반적인 형식은 MongoDB의 문서에서입니다. 즉 Cursor.plan (). 당신이 정말로 파고하려면 더 깊은 당신은 더 많은 세부 사항에 대한 cursor.plan (true)를 할 수 있습니다.

    .. 제한 (1) 하나 개의 인덱스 항목을 읽 - 인덱스가 기본 오름차순이고 당신이 원하는 경우에도 - : 당신은 인덱스, 당신의 db.col.find을 ()이있는 경우 종류 ({1 "필드는"}) 그런 말로 미루어 보아, 최대 항목과 컬렉션에서 하나 개의 값.

    즉 @yogesh의 제안은 올바른 것입니다.

    감사합니다 - 수밋

  5. ==============================

    5.당신은 그룹과 최대를 사용할 수 있습니다 :

    당신은 그룹과 최대를 사용할 수 있습니다 :

    db.getCollection ( '아이들'). 골재 ([     {         그룹을 $ {             _id : 널 (null),             maxQuantity : {$ 최대 : "$ 시대"}         }     } ])

  6. ==============================

    6.간단한 설명, 아래 같은 몽고 질의 응답 뭔가가있는 경우 - 당신은 "날짜"> Array- 만 가장 높은 값을 원하는

    간단한 설명, 아래 같은 몽고 질의 응답 뭔가가있는 경우 - 당신은 "날짜"> Array- 만 가장 높은 값을 원하는

    {
      "_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"
      ],
      "Date": [
        "2017-02-13T00:00:00.000Z",
        "2017-03-05T00: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"
        }
      ],
    
    },
    

    *** 그런 다음 추가를

    below- 같은

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

    그리고 마지막 질의 응답 아래에있을 것입니다

    {
      "_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"
    },
    
  7. ==============================

    7.최대 값을 위해, 우리는 SQL 쿼리를 작성할 수 있습니다

    최대 값을 위해, 우리는 SQL 쿼리를 작성할 수 있습니다

    select age from table_name order by age desc limit 1
    

    우리가 너무 MongoDB를 쓸 수 같은 방법으로.

    db.getCollection('collection_name').find().sort({"age" : -1}).limit(1); //max age
    db.getCollection('collection_name').find().sort({"age" : 1}).limit(1); //min age
    
  8. ==============================

    8.

    db.collection.findOne().sort({age:-1}) //get Max without need for limit(1)
    
  9. from https://stackoverflow.com/questions/32076382/mongodb-how-to-get-max-value-from-collections by cc-by-sa and MIT license