복붙노트

[MONGODB] MongoDB를 수집에서 최신 기록을 가져 오기

MONGODB

MongoDB를 수집에서 최신 기록을 가져 오기

나는 컬렉션의 가장 최근의 기록을 알고 싶어요. 그렇게하는 방법?

참고 : 나는 다음과 같은 명령 줄 쿼리의 작품을 알고 :

1. db.test.find().sort({"idate":-1}).limit(1).forEach(printjson);
2. db.test.find().skip(db.test.count()-1).forEach(printjson)

IDATE 갖는 경우는 타임 스탬프했다.

문제는 더 이상 수집 데이터와 내 '테스트'컬렉션 정말 크다을 다시 얻을 수있는 시간입니다. 나는 일정 시간 응답하여 쿼리가 필요합니다.

더 나은 MongoDB를 명령 줄 쿼리가 있으면 알려주세요 않습니다.

해결법

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

    1.이것은 이전의 대답의 재탕이지만 다른 MongoDB의 버전에 대한 작업에 더 가능성이 높습니다.

    이것은 이전의 대답의 재탕이지만 다른 MongoDB의 버전에 대한 작업에 더 가능성이 높습니다.

    db.collection.find().limit(1).sort({$natural:-1})
    
  2. ==============================

    2.이것은 수집을 위해 마지막으로 한 문서를 줄 것이다

    이것은 수집을 위해 마지막으로 한 문서를 줄 것이다

    db.collectionName.findOne({}, {sort:{$natural:-1}})
    

    $ 천연 : -1 수단 레코드가 삽입되어있는 하나의 양을 주문한다.

    편집 : 모든 downvoters를 들어, 위의 몽구스 구문은, 몽고 CLI 구문이다. db.collectionName.find ({}) 분류 ({$ 천연 : -1}). 한계 (1)

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

    3.기본적으로, MongoDB의에서 인덱스는 B-나무입니다. A B 트리를 검색하는 것은 O입니다 (logN) 작업, 그래서도 찾을 수 있습니다 ({_ ID : ...}는) 일정 시간, O (1) 응답을 제공하지 않습니다.

    기본적으로, MongoDB의에서 인덱스는 B-나무입니다. A B 트리를 검색하는 것은 O입니다 (logN) 작업, 그래서도 찾을 수 있습니다 ({_ ID : ...}는) 일정 시간, O (1) 응답을 제공하지 않습니다.

    그것은 당신이 또한 정렬 _id에 의해 당신이 ID에 대해 ObjectId가를 사용하는 수 있다면 말했다. 자세한 내용은 여기를 참조하십시오. 물론, 심지어는 마지막 순간 만 좋다.

    당신은 "두 번 쓰기"에 의지 할 수 있습니다. 는 "마지막 업데이트"컬렉션에 메인 수집 및 다시 쓰기로 한 번 쓰기. 거래없이이 완벽하지 않지만 "마지막 업데이트"컬렉션의 하나의 항목으로 항상 빠른 될 것입니다.

  4. ==============================

    4.아직 MongoDB의 컬렉션에서 마지막 항목을 얻는 또 다른 방법은 (예제에 대해 신경 쓰지 않는다)

    아직 MongoDB의 컬렉션에서 마지막 항목을 얻는 또 다른 방법은 (예제에 대해 신경 쓰지 않는다)

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

    일반 프로젝션

    > db.Sports.find()
    { "_id" : ObjectId("5bfb5f82dea65504b456ab12"), "Type" : "NFL", "Head" : "Patriots Won SuperBowl 2017", "Body" : "Again, the Pats won the Super Bowl." }
    { "_id" : ObjectId("5bfb6011dea65504b456ab13"), "Type" : "World Cup 2018", "Head" : "Brazil Qualified for Round of 16", "Body" : "The Brazilians are happy today, due to the qualification of the Brazilian Team for the Round of 16 for the World Cup 2018." }
    { "_id" : ObjectId("5bfb60b1dea65504b456ab14"), "Type" : "F1", "Head" : "Ferrari Lost Championship", "Body" : "By two positions, Ferrari loses the F1 Championship, leaving the Italians in tears." }
    

    정렬 된 프로젝션 (_id : 역순)

    > db.Sports.find().sort({'_id':-1})
    { "_id" : ObjectId("5bfb60b1dea65504b456ab14"), "Type" : "F1", "Head" : "Ferrari Lost Championship", "Body" : "By two positions, Ferrari loses the F1 Championship, leaving the Italians in tears." }
    { "_id" : ObjectId("5bfb6011dea65504b456ab13"), "Type" : "World Cup 2018", "Head" : "Brazil Qualified for Round of 16", "Body" : "The Brazilians are happy today, due to the qualification of the Brazilian Team for the Round of 16 for the World Cup 2018." }
    { "_id" : ObjectId("5bfb5f82dea65504b456ab12"), "Type" : "NFL", "Head" : "Patriots Won SuperBowl 2018", "Body" : "Again, the Pats won the Super Bowl" }
    

    종류 ({ '_ ID는': - 1}), 자신의 _ids에 따라 모든 문서의 순서를 내림차순으로 프로젝션을 정의합니다.

    정렬 된 프로젝션 (_id : 역순) : 모음에서 최신 (마지막) 문서를 받고.

    > db.Sports.find().sort({'_id':-1}).limit(1)
    { "_id" : ObjectId("5bfb60b1dea65504b456ab14"), "Type" : "F1", "Head" : "Ferrari Lost Championship", "Body" : "By two positions, Ferrari loses the F1 Championship, leaving the Italians in tears." }
    
  5. ==============================

    5.php7.1 MongoDB를 : $ 데이터 = $ 모음 -> findOne ([] [ '정렬'=> [ '_id'=> -1] '투영'=> [ '_id'=> 1]);

    php7.1 MongoDB를 : $ 데이터 = $ 모음 -> findOne ([] [ '정렬'=> [ '_id'=> -1] '투영'=> [ '_id'=> 1]);

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

    6.내 솔루션 :

    내 솔루션 :

    ( "이름 모음") db.collection 찾기 ({}, {제한 : 1}).. 분류 ({자연 $ : -1})

  7. ==============================

    7.당신이 문서에서 자동으로 생성 된 몽고의 개체 ID를 사용하는 경우 컬렉션에 삽입 된 최신 문서가 발견 될 수있는 사용하여 첫 번째 4 바이트로의 타임 스탬프가 포함되어 있습니다. 나는이 오래된 질문은 이해하지만 누군가는 여전히 하나의 대안을 찾고 여기에 종료됩니다.

    당신이 문서에서 자동으로 생성 된 몽고의 개체 ID를 사용하는 경우 컬렉션에 삽입 된 최신 문서가 발견 될 수있는 사용하여 첫 번째 4 바이트로의 타임 스탬프가 포함되어 있습니다. 나는이 오래된 질문은 이해하지만 누군가는 여전히 하나의 대안을 찾고 여기에 종료됩니다.

    db.collectionName.aggregate(
    [{$group: {_id: null, latestDocId: { $max: "$_id"}}}, {$project: {_id: 0, latestDocId: 1}}])
    

    위 쿼리는 컬렉션에 삽입 된 최신 문서에 대한 _id를 줄 것이다

  8. from https://stackoverflow.com/questions/10920651/get-the-latest-record-from-mongodb-collection by cc-by-sa and MIT license