MongoDB - CRUD

Verba volant, scripta manent·2021년 4월 13일
0

CREATE - insert

모든 MongoDB 도큐먼트는 모든 도큐먼트가 _id 필드를 기본값으로 반드시 가지고 있어야 한다는 공통점이 있다.
또한 도큐먼트를 추가할 때, _id 필드와 값을 특정하지 않았다면, 자동적으로 _id 필드가 생성되고 값에 ObjectId 타입이 할당된다.

이때 도큐먼트 내 필드와 값이 똑같다 할지라도, _id 값이 다르면 서로 다른 도큐먼트로 간주하며 도큐먼트 내 필드와 값이 다르다고 하더라도, _id값이 같다고 하면 서로 같은 도큐먼트로 여겨 에러를 발생시킨다.

-> 따라서 도큐먼트는 고유한 _id 값을 가지고 있어야 하며 도큐먼트를 추가할 때, _id 필드와 값을 특정하지 않았다면 자동적으로 _id 필드가 생성되고 값에 ObjectId 타입이 할당된다.

Inset 명령어를 사용하면 주어진 도큐먼트 배열의 인덱스 순서로 작업이 실행된다.
그러나 ordered를 추가하면 순서에 상관없이 고유한 _id를 가진 도큐먼트는 모두 컬렉션에 삽입된다.

READ - find

찾을 때는 find라는 명령어를 사용한다.

db.collection_name.find(<쿼리문>)

이 명령어를 사용할 때, 이미 필요한 데이터베이스 공간으로 이동했기 때문에 사용할 데이터베이스의 이름을 특정해서 작성할 필요가 없다.

만약 두 가지의 조건을 주고 싶다면 이렇게 작성하면 된다.

db.collection_name.find(<쿼리문1, 쿼리문2>)

만약 전체의 조건을 보고 싶다면?

db.collection_name.find()

그런데 이렇게 출력하면 보기가 좀 불편하다.
그래서 이렇게 출력한다.(데이터 수를 조회)

db.collection_name.find().count()

특정한 조건을 조회하려면?

db.collection_name.findOne()

UPDATE

mongo shell에서 도큐먼트를 업데이트 하기 위한 방법에는 updateOne, updateMany 등 2가지가 있다.

  • updateOne : 주어진 기준에 맞는 다수의 도큐먼트 중 첫번째 도큐먼트 하나만 업데이트
  • updateMany : 쿼리문과 일치하는 모든 도큐먼트를 업데이트

  • $set : 주어진 필드에 지정된 값을 업데이트
  • $push : 해당 서브 도큐먼트를 추가하기 위한 연산자

DELETE

mongo shell을 사용하여 도큐먼트 및 컬렉션을 삭제하려고 한다면, deleteOne( )과 deleteMany( )를 사용할 수 있다.

  • deleteOne : 주어진 기준에 맞는 다수의 도큐먼트 중 첫번째 도큐먼트 하나를 삭제
  • deleteMany : 쿼리문과 일치하는 모든 도큐먼트를 삭제

컬렉션 삭제

db.collection_name.drop()

비교 연산자

  • 쿼리 연산자는 데이터베이스내에서 데이터를 찾는 다양한 방법을 제공한다.
  • 비교 연산자를 이용해 특정한 범위내의 데이터를 찾을 수 있다.
  • $eq는 연산자가 지정되어 있지 않은 경우에 기본 연산자로 사용된다.

논리 연산자


  • $and는 연산자가 지정되지 않았을 때 기본 연산자로 사용된다.(동일한 연산자를 두 번 이상 포함해야 할 때)

표현 연산자

  • $ : 필드의 값을 참조한다.

배열 연산자

  • $push : 배열의 마지막 위치에 엘리먼트를 넣으며, 배열이 아닌 필드에 사용했을 경우 필드의 타입을 배열로 바꾼다.

배열 연산자와 Projection


배열과 서브 도큐먼트 쿼리하기



profile
말은 사라지지만 기록은 남는다

0개의 댓글

관련 채용 정보