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개의 댓글