[MONGODB] MongoDB를 수집에서 최신 기록을 가져 오기
MONGODBMongoDB를 수집에서 최신 기록을 가져 오기
나는 컬렉션의 가장 최근의 기록을 알고 싶어요. 그렇게하는 방법?
참고 : 나는 다음과 같은 명령 줄 쿼리의 작품을 알고 :
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.이것은 이전의 대답의 재탕이지만 다른 MongoDB의 버전에 대한 작업에 더 가능성이 높습니다.
이것은 이전의 대답의 재탕이지만 다른 MongoDB의 버전에 대한 작업에 더 가능성이 높습니다.
db.collection.find().limit(1).sort({$natural:-1})
-
==============================
2.이것은 수집을 위해 마지막으로 한 문서를 줄 것이다
이것은 수집을 위해 마지막으로 한 문서를 줄 것이다
db.collectionName.findOne({}, {sort:{$natural:-1}})
$ 천연 : -1 수단 레코드가 삽입되어있는 하나의 양을 주문한다.
편집 : 모든 downvoters를 들어, 위의 몽구스 구문은, 몽고 CLI 구문이다. db.collectionName.find ({}) 분류 ({$ 천연 : -1}). 한계 (1)
-
==============================
3.기본적으로, MongoDB의에서 인덱스는 B-나무입니다. A B 트리를 검색하는 것은 O입니다 (logN) 작업, 그래서도 찾을 수 있습니다 ({_ ID : ...}는) 일정 시간, O (1) 응답을 제공하지 않습니다.
기본적으로, MongoDB의에서 인덱스는 B-나무입니다. A B 트리를 검색하는 것은 O입니다 (logN) 작업, 그래서도 찾을 수 있습니다 ({_ ID : ...}는) 일정 시간, O (1) 응답을 제공하지 않습니다.
그것은 당신이 또한 정렬 _id에 의해 당신이 ID에 대해 ObjectId가를 사용하는 수 있다면 말했다. 자세한 내용은 여기를 참조하십시오. 물론, 심지어는 마지막 순간 만 좋다.
당신은 "두 번 쓰기"에 의지 할 수 있습니다. 는 "마지막 업데이트"컬렉션에 메인 수집 및 다시 쓰기로 한 번 쓰기. 거래없이이 완벽하지 않지만 "마지막 업데이트"컬렉션의 하나의 항목으로 항상 빠른 될 것입니다.
-
==============================
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.php7.1 MongoDB를 : $ 데이터 = $ 모음 -> findOne ([] [ '정렬'=> [ '_id'=> -1] '투영'=> [ '_id'=> 1]);
php7.1 MongoDB를 : $ 데이터 = $ 모음 -> findOne ([] [ '정렬'=> [ '_id'=> -1] '투영'=> [ '_id'=> 1]);
-
==============================
6.내 솔루션 :
내 솔루션 :
( "이름 모음") db.collection 찾기 ({}, {제한 : 1}).. 분류 ({자연 $ : -1})
-
==============================
7.당신이 문서에서 자동으로 생성 된 몽고의 개체 ID를 사용하는 경우 컬렉션에 삽입 된 최신 문서가 발견 될 수있는 사용하여 첫 번째 4 바이트로의 타임 스탬프가 포함되어 있습니다. 나는이 오래된 질문은 이해하지만 누군가는 여전히 하나의 대안을 찾고 여기에 종료됩니다.
당신이 문서에서 자동으로 생성 된 몽고의 개체 ID를 사용하는 경우 컬렉션에 삽입 된 최신 문서가 발견 될 수있는 사용하여 첫 번째 4 바이트로의 타임 스탬프가 포함되어 있습니다. 나는이 오래된 질문은 이해하지만 누군가는 여전히 하나의 대안을 찾고 여기에 종료됩니다.
db.collectionName.aggregate( [{$group: {_id: null, latestDocId: { $max: "$_id"}}}, {$project: {_id: 0, latestDocId: 1}}])
위 쿼리는 컬렉션에 삽입 된 최신 문서에 대한 _id를 줄 것이다
from https://stackoverflow.com/questions/10920651/get-the-latest-record-from-mongodb-collection by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 이유는 MongoDB를 시작할 수 없습니다 (0) | 2019.12.21 |
---|---|
[MONGODB] 왜 몽구스는 스키마와 모델 모두이 있습니까? (0) | 2019.12.21 |
[MONGODB] 합니까 MongoDB를 다시 연결 문제가 아니면 내가 잘못을하고있는 중이 야? (0) | 2019.12.21 |
[MONGODB] CSV 파일로 몽고 쿼리의 리디렉션 출력 (0) | 2019.12.21 |
[MONGODB] MongoDB의 저장 위치와 삽입의 차이점은 무엇입니까? (0) | 2019.12.21 |