MongoDB

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

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 또한 임의 쿼리를 허용하지만 조인은 지원하지 않는다. (간단한 키(값) 저장 시스템은 하나의 키에 대해서만 값을 가져올 수 있다.