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 명령줄 쿼리가 있으면 알려주세요.
이것은 이전 답변을 재탕한 것이지만 다른 mongodb 버전에서 작동할 가능성이 높습니다.
db.collection.find().limit(1).sort({$natural:-1})
이것으로, 다음의 문서를 입수할 수 있습니다.collection
db.collectionName.findOne({}, {sort:{$natural:-1}})
$natural:-1
레코드가 삽입된 순서와 반대되는 순서를 의미합니다.
편집: 모든 다운보터에 대해 위의 Mongoose 구문은 다음과 같습니다.mongo CLI 구문은 다음과 같습니다.db.collectionName.find({}).sort({$natural:-1}).limit(1)
MongoDB Collection에서 마지막 항목을 가져오는 또 다른 방법(예시는 신경 쓰지 마십시오)
> 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" }
sort({'_id':-1})
모든 문서의 내림차순으로 투영을 정의합니다._id
s.
정렬된 투영(_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." }
일정한 시간 응답을 가진 쿼리가 필요합니다.
기본적으로는 MongoDB의 인덱스는 B-Tree입니다.B-Tree 검색은 O(logN) 작업이기 때문에find({_id:...})
일정한 시간을 제공하지 않습니다(O(1) 응답).
여기에 기재되어 있는 바와 같이,_id
사용하시는 경우ObjectId
ID를 입력해 주세요.자세한 내용은 여기를 참조해 주세요.물론, 그마저도 마지막 순간까지만 좋다.
"두 번 쓰기"를 사용해도 됩니다.기본 컬렉션에 한 번 쓰고 "마지막으로 업데이트된" 컬렉션에 다시 쓰십시오.트랜잭션이 없으면 완벽하지는 않지만 "마지막 업데이트" 컬렉션에 있는 항목이 하나뿐이므로 항상 빠릅니다.
php7.1 mongoDB:
$data = $collection->findOne([],['sort' => ['_id' => -1],'projection' => ['_id' => 1]]);
마이솔루션:
db.collection("name of collection").find({}, {limit: 1}).sort({$natural: -1})
문서에서 자동 생성된 Mongo 오브젝트 ID를 사용하는 경우 컬렉션에 삽입된 최신 문서를 검색할 수 있는 첫 번째 4바이트로 타임스탬프가 포함됩니다.오래된 질문인 건 알지만 누군가 다른 대안을 찾고 있다면요
db.collectionName.aggregate(
[{$group: {_id: null, latestDocId: { $max: "$_id"}}}, {$project: {_id: 0, latestDocId: 1}}])
위의 쿼리는 컬렉션에 삽입된 최신 문서의 _id를 제공합니다.
foo 컬렉션의 모든 MongoDB 문서에서 마지막 레코드를 가져오는 방법은 다음과 같습니다.(변경 foo,x,y..등)
db.foo.aggregate([{$sort:{ x : 1, date : 1 } },{$group: { _id: "$x" ,y: {$last:"$y"},yz: {$last:"$yz"},date: { $last : "$date" }}} ],{ allowDiskUse:true })
그룹에 추가하거나 그룹에서 제거할 수 있습니다.
도움말 기사: https://docs.mongodb.com/manual/reference/operator/aggregation/group/ #pipe._S_group
https://docs.mongodb.com/manual/reference/operator/aggregation/last/
Mongo CLI 구문:
db.collectionName.find({}).sort({$natural:-1}).limit(1)
Mongo가 ID를 생성하게 하면 자동으로 증가하는 해시입니다.
mymongo: 자기 자신._collection.find_id"-1.limit(1)
언급URL : https://stackoverflow.com/questions/10920651/get-the-latest-record-from-mongodb-collection
'programing' 카테고리의 다른 글
어레이가 포함된 오브젝트 어레이의 시리얼화 해제 (0) | 2023.04.03 |
---|---|
폴리랑:커스텀 문자열을 번역하는 방법 (0) | 2023.04.03 |
WordPress는 사용자 지정 URL을 함수에 매핑합니다. (0) | 2023.04.03 |
2개의 필드(하나는 역방향)로 정렬 (0) | 2023.03.29 |
spring mvc rest 서비스 리다이렉트/전송/프록시 (0) | 2023.03.29 |