Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 두 숫자 사이의 요소 조회하기 – 경계값을 모두 제외하는 방법

MongoDB에서 특정 필드 값이 두 숫자 사이에 있는 문서를 조회할 때, 경계값 자체는 제외하고 싶은 경우가 있습니다. 예를 들어 50과 60 사이의 값을 구하되, 50과 60은 결과에 포함하지 않으려면 비교 연산자 $gt(초과)와 $lt(미만)를 함께 사용하면 됩니다.

기본 문법

50과 60 두 숫자를 모두 제외하고 그 사이의 요소만 가져오려면 아래 문법을 사용합니다.

db.yourCollectionName.find({yourFieldName: { $gt : 50 , $lt : 60 } } );

반대로 50과 60도 결과에 포함하고 싶다면 $gte(이상)와 $lte(이하)를 사용하면 됩니다.

db.yourCollectionName.find({yourFieldName: { $gte : 50 , $lte : 60 } } );

예제 컬렉션 생성

먼저 테스트용 컬렉션을 만들고 여러 문서를 삽입해 보겠습니다.

> db.returnEverythingBetween50And60.insertOne({"Amount":55});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd3c42eedc6604c74817cdb") }
> db.returnEverythingBetween50And60.insertOne({"Amount":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd3c432edc6604c74817cdc") }
> db.returnEverythingBetween50And60.insertOne({"Amount":50});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd3c436edc6604c74817cdd") }
> db.returnEverythingBetween50And60.insertOne({"Amount":59});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd3c43aedc6604c74817cde") }
> db.returnEverythingBetween50And60.insertOne({"Amount":60});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd3c43eedc6604c74817cdf") }
> db.returnEverythingBetween50And60.insertOne({"Amount":49});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd3c442edc6604c74817ce0") }
> db.returnEverythingBetween50And60.insertOne({"Amount":71});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd3c445edc6604c74817ce1") }

저장된 전체 문서 확인

find() 메서드에 pretty()를 붙여 컬렉션의 모든 문서를 출력해 보겠습니다.

> db.returnEverythingBetween50And60.find().pretty();

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5cd3c42eedc6604c74817cdb"), "Amount" : 55 }
{ "_id" : ObjectId("5cd3c432edc6604c74817cdc"), "Amount" : 45 }
{ "_id" : ObjectId("5cd3c436edc6604c74817cdd"), "Amount" : 50 }
{ "_id" : ObjectId("5cd3c43aedc6604c74817cde"), "Amount" : 59 }
{ "_id" : ObjectId("5cd3c43eedc6604c74817cdf"), "Amount" : 60 }
{ "_id" : ObjectId("5cd3c442edc6604c74817ce0"), "Amount" : 49 }
{ "_id" : ObjectId("5cd3c445edc6604c74817ce1"), "Amount" : 71 }

경계값(50, 60)을 제외한 범위 조회 쿼리

이제 50과 60 두 숫자를 모두 제외하고 그 사이의 값만 반환하는 쿼리를 실행해 보겠습니다.

> db.returnEverythingBetween50And60.find({Amount: { $gt : 50 , $lt : 60 } } );

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5cd3c42eedc6604c74817cdb"), "Amount" : 55 }
{ "_id" : ObjectId("5cd3c43aedc6604c74817cde"), "Amount" : 59 }

결과 분석

출력 결과를 보면 $gt: 50(50 초과)과 $lt: 60(60 미만) 조건 덕분에 Amount가 55와 59인 문서만 반환되었습니다. 경계값인 50과 60은 물론, 범위를 벗어난 45, 49, 71도 모두 제외된 것을 확인할 수 있습니다.

정리하면, MongoDB에서 범위 양 끝의 숫자를 제외한 중간값만 조회하려면 $gt$lt를 조합하고, 경계값까지 포함하려면 $gte$lte를 사용하면 됩니다.