반응형
mongodb 컬렉션에서 가장 오래된/최연소 게시물 찾기
나는 있습니다mongodb
필드가 많은 컬렉션입니다.하나의 필드는 'date_time'이며 ISO 날짜 형식입니다. 예:ISODate("2014-06-11T19:16:46Z")
다른 필드는 '이름'입니다.
주어진 aname
컬렉션에서 가장 오래된/가장 어린 게시물을 어떻게 찾을 수 있습니까?
예: 있는 경우two
'data' 컬렉션의 게시물:
[{'name' : 'John', 'date_time' : ISODate("2014-06-11T19:16:46Z")},
{'name' : 'John', 'date_time' : ISODate("2015-06-11T19:16:46Z")}]
'John'이라는 이름이 주어지면 컬렉션에서 가장 오래된 게시물을 어떻게 찾을 수 있습니까? 즉, 다음과 같은 게시물이 있습니다.ISODate("2014-06-11T19:16:46Z")
마찬가지로 가장 어린 게시물도 마찬가지입니다.
가장 오래된 항목:
db.posts.find({ "name" : "John" }).sort({ "date_time" : 1 }).limit(1)
최신:
db.posts.find({ "name" : "John" }).sort({ "date_time" : -1 }).limit(1)
인덱스 위치{ "name" : 1, "date_time" : 1 }
쿼리를 효율적으로 수행할 수 있습니다.
다음과 같이 집계할 수 있습니다.
다음을 작성합니다.
index
에서name
그리고.date_time
필드, 그래서.$match
그리고.$sort
무대 작업에서 사용할 수 있습니다.db.t.ensureIndex({"name":1,"date_time":1})
$match
원하는 모든 기록name(s)
.$sort
타고date_time
오름차순으로$group
의 옆에name
필드. $first 연산자를 사용하여 그룹의 첫 번째 레코드를 가져오십시오. 이 레코드는 가장 오래된 레코드이기도 합니다.$last 연산자를 사용하여 그룹의 마지막 레코드를 가져오면 최신 레코드가 됩니다.- 전체 레코드를 가져오려면 $$ROOT 시스템 변수를 사용합니다.
코드:
db.t.aggregate([
{$match:{"name":"John"}},
{$sort:{"date_time":1}},
{$group:{"_id":"$name","oldest":{$first:"$$ROOT"},
"youngest":{$last:"$$ROOT"}}}
])
o/p:
{
"_id" : "John",
"oldest" : {
"_id" : ObjectId("54da62dc7f9ac597d99c182d"),
"name" : "John",
"date_time" : ISODate("2014-06-11T19:16:46Z")
},
"youngest" : {
"_id" : ObjectId("54da62dc7f9ac597d99c182e"),
"name" : "John",
"date_time" : ISODate("2015-06-11T19:16:46Z")
}
}
db.t.find().sort({ "date_time" : 1 }).limit(1).pretty()
언급URL : https://stackoverflow.com/questions/28437909/find-oldest-youngest-post-in-mongodb-collection
반응형
'programing' 카테고리의 다른 글
오류에 관계없이 ts-node를 사용하는 방법은 무엇입니까? (0) | 2023.07.05 |
---|---|
where 절에 대한 Oracle/PL SQL/SQL null 비교 (0) | 2023.07.05 |
.gitignore가 무엇입니까? (0) | 2023.07.05 |
MongoDb: 객체 사용의 이점ID와 ID가 포함된 문자열 중 무엇을 선택하시겠습니까? (0) | 2023.07.05 |
데이터베이스에서 테이블의 마지막 업데이트/삽입/삭제를 찾는 실용적인 방법은 무엇입니까? (0) | 2023.07.05 |