바닥코딩

MongoDB 명령어(Read) 본문

데이터 베이스/MongoDB

MongoDB 명령어(Read)

개발공부개발공부 2023. 6. 18. 19:48

 이번 포스트에서는 read 관련 명령어 들에 대해 다루어 보겠습니다. 

find

find 명령어는 앞서 insertOne 이나 insertMany의 결과를 확인하기 위해 사용했던 적이 있어 쉽게 이해할 수 있는 명령어 입니다

https://dkkim2318.tistory.com/125

 

MongoDB 명령어(Create & Insert)

이번 포스트 부터는 MongoDB에 명령어를 다루어 보겠습니다. 물론 Compass를 통한 Tool을 통해 더욱 간단하게 명령을 처리 할 수 있지만, 명령을 확실하게 이해하기 위해 CMD로 접속해 직접 명령어를

dkkim2318.tistory.com

find 명령어는 db.collectionName.find(query, projection) 형태이며 두개의 인자를 가지고 있습니다.

  • collectionName : 조회 대상 collection 이름 
  • query(선택사항) : 조회할 document의 조건을 지정하는 인자
  • projection(선택사항) : 조회할 필드를 지정 (지정하지 않을 경우 전체 조회) 하며 query 인자 없이 사용 불가

두개의 인자를 가지고 있지만,  두개의 인자를 모두 입력하지 않을 경우 find는 전체를 조회하게 됩니다. 그렇다면 이제  예제를 통해 사용법을 알아보겠습니다

db.user.find();

 

위와 같이 find에  인자를 입력하지 않을 경우 document 전체를 조회하게 됩니다

다음으로는 query에 대해 알아보곘습니다 query 는 field에 맞는 value 값을로 조회 결과를 필터링 합니다. 예를 들어 내가 username이 person2인 document만 조회를 하고 싶다면

db.user.find({username:"person2"});

위와 같이 조건을 설정해 값을 조회하는 것이 가능합니다. 위 명령어를 실행하면

person2에대한 document만 출력하는 것을 확인 할 수 있습니다.  query는 여러개를 지정하는 것도 가능합니다. 이름이 person2이고 password가 1111인 document를 출력하고 싶다면

db.user.find({username:"person2", password :"1111"});

위와 같이 조건을 설쟁해 값을 조회할 수 있습니다

다음으로 projection에 대하여 알아보겠습니다. projectionㅇ 은 반환할 필드를 선택하는 방법을 제공하는 매개변수 입니다. 예를들어  전체를 조회하는데 username만 출력을 하고 싶다면

db.user.find({}, {username:true})

위와 같이 설정을해 조회가 가능합니다.

위에서는 조건을 주고 싶지 않아 query인자를 공백으로 비워뒀지만,  여기서 user 이름이 person2인 document의 password만 조회하고 싶다 하면 아래와 같이 조건과 projection을 같이 지정할 수 있습니다

db.user.find({username:"person2"}, {password:true})

위 명령어를 실행하면 아래와 같은 결과를 조회할 수 있습니다.

 

findOne

 findOne와 비슷하지만 조건에 맞는 문서 중 첫 번째 문서만 반환 합니다 find와 같이 query와 projection 인자를 가질 수 있지만, find와 사용법은 완전히 동일하기 때문에 설명을 생략하겠습니다.

db.user.findOne()

위와 같이 findOne 명령어를 입력하면 컬렉션의 가장 첫 문서의 값을 조회합니다.

count

count는 조건에 맞는 document의 개수를 반환합니다 

db.user.count();

count 명령어도 인자로 query를 넣는것이 가능한데, 예를 들어 username이 person2인 경우만 개수를 알고 싶다면

db.user.count({username:"person2"});

위와 같이 query를 사용해 원하는 조건의 개수만 조회할 수 있습니다.

distinct

 distinct를 통해 중복을 제거하고 유니크한 값들만 가져오는 것이 가능합니다. 예를 들어 지금 user collection에 document들의 username은 모두 유니크 하지만, 여기에 person5이며 password가 다른 데이터가 추가 되었다고 생각해 보겠습니다

document는 총 6개가 존재하지만 distinct 명령어를 통해 username의 유니크하 값만 조회를 한다면

db.user.distinct("username")

해당 명령어를 통해 값을 조회할 수 있습니다.

 

sort

sort는 검색 결과를 정렬하여 보여주고 싶을 때 사용라는 명령어 입니다. sort는 db.collectionName.find().sort(sortCriteria)의 형태로작성하며 인자의 경우

  • collectionName : 조회할 컬렉션 명
  • sortCriteria : 정렬기준

을 의미합니다 정렬기준을 오름차순, 내림차순 으로 정렬이 가능합니다. 예를 들어 username을 기준으로 정렬을 하고 싶다면

//1 오름차순
db.user.find().sort({username:1})
//-1 내림차순
db.user.find().sort({username:-1})

위와 같이 document를 정렬하는 것이 가능합니다.

limit

limit는 반환할 문서의 개수를  제한할 수 있습니다 예를 들어 user 컬렉션의 3개의 document만 보여주고 싶다고 한다면

db.user.find().limit(3)

위와 같이 limit를 활용해 데이터에 조회 개수를 제한할 수 있습니다.

'데이터 베이스 > MongoDB' 카테고리의 다른 글

MongoDB 배열  (0) 2023.08.14
논리, 비교 Query  (0) 2023.06.18
MongoDB 명령어(Create & Insert)  (0) 2023.06.18
쉘을 이용한 MongoDB 접속  (0) 2023.06.17
Compass를 이용한 DB서버 접속 및 생성  (0) 2023.06.17