MongoDB에서 문서의 위치 확인하기
MongoDB에서 특정 문서가 컬렉션 안에서 몇 번째에 위치하는지 확인하려면 sort() 메서드와 count() 메서드를 함께 사용하면 됩니다. 기본 원리는 간단합니다. 해당 문서보다 정렬 순서상 앞선 문서의 개수를 세면 그것이 곧 문서의 위치가 되기 때문입니다.
먼저 예제로 사용할 컬렉션을 만들어 보겠습니다.
1단계: 컬렉션 생성 및 문서 삽입
> db.demo47.insertOne({"ClientName":"Adam"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e267240cfb11e5c34d898f0")
}
> db.demo47.insertOne({"ClientName":"John"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e267243cfb11e5c34d898f1")
}
> db.demo47.insertOne({"ClientName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e267247cfb11e5c34d898f2")
}
> db.demo47.insertOne({"ClientName":"Sam"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e26724ccfb11e5c34d898f3")
}2단계: find()로 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.
> db.demo47.find();
위 쿼리는 다음과 같은 결과를 출력합니다.
{ "_id" : ObjectId("5e267240cfb11e5c34d898f0"), "ClientName" : "Adam" }
{ "_id" : ObjectId("5e267243cfb11e5c34d898f1"), "ClientName" : "John" }
{ "_id" : ObjectId("5e267247cfb11e5c34d898f2"), "ClientName" : "Chris" }
{ "_id" : ObjectId("5e26724ccfb11e5c34d898f3"), "ClientName" : "Sam" }3단계: 문서의 위치를 반환하는 쿼리 실행
이제 ClientName이 "John"인 문서가 컬렉션에서 어느 위치에 있는지 확인해 보겠습니다.
> db.demo47.find({ClientName: {$lt: "John"}}).sort({ClientName: 1}).count();실행 결과는 다음과 같습니다.
2
쿼리 동작 원리
이 쿼리가 어떻게 동작하는지 단계별로 살펴보겠습니다.
find({ClientName: {$lt: "John"}}) — ClientName 값이 "John"보다 사전 순으로 앞선 모든 문서를 조회합니다. 여기서는 "Adam"과 "Chris" 두 개의 문서가 해당됩니다.
.sort({ClientName: 1}) — 조회된 문서를 ClientName 기준 오름차순으로 정렬하여 일관된 순서를 보장합니다.
.count() — 조건에 맞는 문서의 개수를 반환합니다.
결과값 2는 "John"보다 앞선 문서가 2개라는 의미입니다. 즉, "John" 문서는 ClientName 기준 오름차순 정렬 시 3번째(인덱스 2)에 위치한다고 해석할 수 있습니다.
이 방식은 특정 필드 값을 기준으로 문서의 상대적인 순위나 순번을 파악해야 할 때 유용하게 활용할 수 있습니다.