본문 바로가기
카테고리 없음

데이터 베이스 (No SQL) - MongoDB 메소드

by nomfang 2021. 1. 23.
728x90
반응형

Find 메소드 활용

find() 메소드를 이용하여 데이터를 불러온다면 조건과 일치하는 모든 도큐먼트들을 출력해주기 때문에 내가 원하는 개수를 제한해서 조회하거나, 순서대로 나열할 수는 없습니다.

이번 이론에서는 sort(), limit(), skip() 메소드에 대해 학습해보겠습니다. 학습하기 위한 샘플 데이터는 아래 코드를 참고해주세요.

#예시) 메소드 학습을 위한 샘플 데이터

[ { "_id": 1, "item": { "category": "cake", "type": "chiffon" }, "amount": 10 },

{ "_id": 2, "item": { "category": "cookies", "type": "chocolate chip" },"amount": 50 },

{ "_id": 3, "item": { "category": "cookies", "type": "chocolate chip" }, "amount": 15 },

{ "_id": 4, "item": { "category": "cake", "type": "lemon" }, "amount": 30 },

{ "_id": 5, "item": { "category": "cake", "type": "carrot" }, "amount": 20 },

{ "_id": 6, "item": { "category": "brownies", "type": "blondie" }, "amount": 10 } ]

sort() 메소드

sort()메소드는 데이터를 정렬할 때 사용하는 메소드

#문법 cursor.sort( { KEY: value } )

#예시 orders.find().sort( { "item.category": 1 } )

#결과: category은 알파벳 순서로 정렬되지만 중복 값을 포함하는 도큐먼트의 순서는 다르다

 { "_id" : 6, "item" : { "category" : "brownies", "type" : "blondie" }, "amount" : 10 },

{ "_id" : 1, "item" : { "category" : "cake", "type" : "chiffon" }, "amount" : 10 },

{ "_id" : 5, "item" : { "category" : "cake", "type" : "carrot" }, "amount" : 20 },

{ "_id" : 4, "item" : { "category" : "cake", "type" : "lemon" }, "amount" : 30 },

{ "_id" : 2, "item" : { "category" : "cookies", "type" : "chocolate chip" }, "amount" : 50 },

{ "_id" : 3, "item" : { "category" : "cookies", "type" : "chocolate chip" }, "amount" : 15 }

#안정적인 정렬 결과를 얻으려면 고유한 값만 포함하는 필드를 추가하여 조회

orders.find().sort( { "item.category": 1, "_id": 1 } )

KEY는 필드명, value는 1이나 -1

  • 1일 경우: 오름차순
  • -1일 경우: 내림차순

또한, 여러 KEY값을 입력할 수 있고 먼저 입력한 순서대로 우선 순위를 갖는다

limit() 메소드

limit()메소드는 출력할 데이터 갯수를 제한하고자 할 때 사용되는 메소드입

value값에 출력할 갯수 값을 입력

#문법 cursor.limit(value)

#예시: 출력 할 갯수 2개로 제한하기(기본적인 우선정렬 순서대로 잘려져서 조회됨)

{ "_id" : 1, "item" : { "category" : "cake", "type" : "chiffon" }, "amount" : 10 },

{ "_id" : 2, "item" : { "category" : "cookies", "type" : "chocolate chip" }, "amount" : 50 }

skip() 메소드

skip()메소드는 조회할 데이터의 시작부분을 설정

value 값 갯수의 데이터를 생략하고 그 다음 데이터가 조회된다

#문법 cursor.skip(value)

결과값이 조회되기 전 기본 정렬 후, skip()메소드가 적용

#예시: 3개의 데이터를 생략하고 조회

{ "_id" : 4, "item" : { "category" : "cake", "type" : "lemon" }, "amount" : 30 },

{ "_id" : 5, "item" : { "category" : "cake", "type" : "carrot" }, "amount" : 20 },

{ "_id" : 6, "item" : { "category" : "brownies", "type" : "blondie" }, "amount" : 10 }

💡Tip!
메소드는 cursor 객체이기 때문에 중첩하여 사용할 수 있다

반응형

댓글