복붙노트

[MONGODB] MongoDB를에 findOne를 사용하면 최대 ID를 가진 요소를 얻을 수

MONGODB

MongoDB를에 findOne를 사용하면 최대 ID를 가진 요소를 얻을 수

나는 몽고의 컬렉션에서 하나 개의 요소, 가장 큰 _id 필드 하나를 검색하려합니다. 나는이가 쿼리하여 수행 할 수 있습니다 알고 :

db.collection.find().sort({_id: -1}).limit(1)

그러나) (그것은 종류의 unelegant 보인다 나는 findOne를 사용하여 특정 요소를 얻을 수있는 방법이 있는지 궁금 해서요

참고 : 나는 ObjectId가에서 읽은에서 첫 번째 바이트는 신기원 이후 밀리 초에 해당하므로, 마지막 요소는 가장 큰 _id있을 것이다 삽입되고,이 때문에하고 싶어. 콜렉션에 삽입 된 마지막 요소를 검색 할 수있는 다른 방법이 있나요?

해결법

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

    1.당신은 당신이 이미 같은 발견을 사용해야하고 최대 알아낼 _id 필드의 모든 값을 검사해야하므로 속도가 느려집니다되지 집계한다.

    당신은 당신이 이미 같은 발견을 사용해야하고 최대 알아낼 _id 필드의 모든 값을 검사해야하므로 속도가 느려집니다되지 집계한다.

    코멘트 지적 찾기 ()와 findOne ()를 사용하여 차이가 없다 - 기능적 또는 우아함이 많다는. 사실, findOne 쉘에 (그것을 구현하는 드라이버에서) (한도 -1 셸에서 귀여운 프린트가) 발견의 관점에서 정의된다.

    당신이 정말로에 해당하는 작업을 수행하려면

    db.collection.find().sort({_id:-1}).limit(1).pretty()
    

    findOne 당신이 구문을 사용하여 그것을 할 수 있습니다 :

    db.collection.findOne({$query:{},$orderby:{_id:-1}})
    
  2. ==============================

    2.당신은 MongoDB를의 집계를 사용하여 최대 _id를 얻을 수 있습니다. 찾아 종류의를 과잉 수 있습니다.

    당신은 MongoDB를의 집계를 사용하여 최대 _id를 얻을 수 있습니다. 찾아 종류의를 과잉 수 있습니다.

    db.myCollection.aggregate({
        $group: {
            _id: '',
            last: {
                $max: "$_id"
            }
        }
    });
    
  3. ==============================

    3.PHP 드라이버 (MongoDB를) ()을 사용 findOne

    PHP 드라이버 (MongoDB를) ()을 사용 findOne

    $filter=[];
    $options = ['sort' => ['_id' => -1]]; // -1 is for DESC
    $result = $collection->findOne(filter, $options);
    $maxAge = $result['age']
    
  4. ==============================

    4.

    import pymongo
    
    tonystark = pymongo.MongoClient("mongodb://localhost:27017/")
    
    mydb = tonystark["tonystark_db"]
    savings = mydb["customers"]
    
    x = savings.find().sort("_id")
    for s in x:
        print(s)
    
  5. ==============================

    5.

    $maxId="";
    
    $Cursor =$collection->find();
    
    foreach($cursor as $document) { 
        $maxid =max($arr=(array($document['id'])));
    }
    
    print_r($maxid+1);
    
  6. from https://stackoverflow.com/questions/22118210/using-findone-in-mongodb-to-get-element-with-max-id by cc-by-sa and MIT license