KWSStudy

업데이트, 원자적 연산, 삭제

MongoDB - 업데이트, 원자적 연산, 삭제

14 minute read

6.1 도큐먼드 업데이트 1 . MongoDB에서 업데이트를 하려면 두 가지 방법을 사용할 수 있다. 도큐먼트 전체를 대치하든지 아니면 도큐먼트 내의 특정 필드를 수정하기 위해 업데이트 연산자를 조합해서 사용할 수 있다. user_id = BSON::ObjectId("4c4b1476238d3b4dd5000001") doc = @user.find_one({:_id => user_id}) doc[‘email’] = ‘mongodb-user@10gen.com’ @users.update({:_id => user_id}, doc, :safe => true) 도규먼트를 수정하는 방법 유저의 _id를 가지고 먼저 도큐먼트를 검색한다. 그런 다음 불러온 도큐먼트의 email속성을 수정하고, 수정된 도큐먼트를 update 메소드의 파라미터로 넘겨주게 된다. 마지막 라인은 유저 컬렉션에서 주어진 _id로 도큐먼트를 찾아서 새로이 제공하는 도큐먼트로 대치하라는 의미이다.(도규먼트를 수정하는 방법) 연산자로 수정하는 방법 업데이트 연산자 중에 하나인 $set을 사용했다.

쿼리와 집계

MongoDB - 쿼리와 집계

5 minute read

목표 Mongodb 질의 연산자를 자세히 다뤄보자. 맵-리듀스 함수를 중심으로 데이터에 대해 집계를 실행하는 방법을 살펴 보자. 상품, 카테고리, 리뷰 쿼리 상품 페이지를 가져오는 쿼리 예 //1. slug가 whell-barrow-9092인 상품을 찾는다. db.products.findOne({‘slug’:‘whell-barrow-9092’}) //2. 해당 상품의 카테고리 정보를 가져온다. db.categories.findOne({’_id’:product[‘main_cat_id’]}) //3. 상품 리뷰를 불러온다. db.reviews.find({‘product_id’:product[’_id’]}) findOne()과 find()의 차이점 findOne()은 도큐먼트를 리턴한다.하나의 도큐먼트를 얻고자 할 때 사용한다. find()는 커서객체를 리턴한다. 여러개의 도큐먼트를 리턴 할 때 사용한다. findOne()은 db.collection.find().limit(1)과 동일하다 페이지를 나누기위해 Mongodb는 skip()과 limit() 옵션을 제공한다.

도큐먼트 지향 데이터

MongoDB - 도큐먼트 지향 데이터

7 minute read

도큐먼트 지향 데이터 4.1 스키마 설계 원리 “이론에 따라 스키마를 설계해야 하지만 실제에서는 이론을 융통성 있게 적용해야 한다.” (이에 따른 제기할수 있는 질답) 데이터의 기본 단위는 무엇인가? RDBMS에서는 행과 열로 이루어진 테이블이 있다. 키(값) 저장 시스템에서는 키와 값을 갖는데, 여기서 값은 비구조적이다. MongDB에서는 데이터 기본적 단위가 BSON도큐먼트다. 데이터를 어떻게 쿼리하고 업데이트할 것인가? RDBMS는 임의 쿼리와 조인이 특징. MongDB 또한 임의 쿼리를 허용하지만 조인은 지원하지 않는다. (간단한 키(값) 저장 시스템은 하나의 키에 대해서만 값을 가져올 수 있다.

메서드 호출 단순화

Refactoring - 메서드 호출 단순화

6 minute read

메서드 호출 단순화 객체에서 가장 중요한 것은 인터페이스. 이해와 사용이 쉬운 인터페이스를 작성하는 기술이야 말로 좋은 객체지향 소프트웨어 개발에 꼭 필요. 인터페이스를 더 쉽게 만드는 리펙토링 기법을 설명 함. 1. 메서드명 변경 Rename Method 1.1 동기 저자가 주장하는 코드 스타일의 가장 중요한 부분은 복잡한 과정을 여러 작은 메서드로 잘개 쪼개는것. 메서드를 쪼개는 과정을 잘못 적용할 경우 메서드의 역할을 파악하기 힘들어짐. 이런 문제를 방지하기 위해 메서드명을 잘 지어야함. 1.2 방법 메서드가 상위클래스나 하위클래스에 구현 되어 있는지 검사.

조건문 간결화

Refactoring - 조건문 간결화

6 minute read

  1. 조건문 간결화 조건문을 간호화 하는 리팩토링 종류 조건문을 여러 개로 나누는 조건문 쪼개기 여러 조건 검사가 있는데 결과가 모두 같을 땐 중복 조건식 통합 조건문 안의 중복 코드를 제거하려면 조건문의 공통 실행 코드 빼내기 특수한 case 조건문을 명확히 하려면 여러 겹의 조건문을 감시 절로 전환 복잡한 제어 플래그를 제거하려면 제어 플래그 제거 ** 1. 조건문 쪼개기 ** 복잡한 조건문 (if-then-else)이 있을 땐 if, then, else 부분을 각각 메서드로 빼내자 동기 프로그램에서 가장 복잡한 부분은 주로 복잡한 조건문이다.