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

몽고DB (mongoDB) 명령어

by 몽상크리에이터 2024. 6. 5.

1. use 데이터베이스이름 : 데이터 베이스를 사용(없는 이름이면 생성)

2. 컬럼이름 생성(1번 실행해서 데이터베이스 접속 상태에서)

db.createCollection('컬럼이름')

db.createCollection('col1')

 

3.컬럼 삭제

db.컬럼.drop()

db.col1.drop()

 

4. 데이터베이스 삭제

db.dropDatabase()

5. 데이터베이스 저장 insertOne / insertMany

db.col4.insertOne({name:'테스트', age:20, arrstr:[{hobby:'야구', hobby2:'테니스'}, {job:'프로그래머'}]})

 

 

db.col3.insertMany([
  {name: '홍길동', age: 10, etc: [{hobby: '등산', state: '대한민국'}, {likenum: [1, 2, 3, 4, 5]}]},
   {name: '임꺽정', age: 20, etc: [{hobby: '바둑', state: '중국'}, {likenum: [2, 3, 4, 5, 6]}]},
   {name: '장길산', age: 30, etc: [{hobby: '낚시', state: '일본'}, {likenum: [3, 4, 5, 6, 7]}]},
   {name: '일지매', age: 40, etc: [{hobby: '없음', state: '몽고'}, {likenum: [4, 5, 6, 7, 8]}]}
])

 

 

6. 조건문

 

db.col1.find( // select name, age from col1 where age = 30
   {'age': // 조건을 지정할 필드 이름
      // $eq: 같다, $ne: 같지 않다, $gt: 크다, $gte: 크거나 같다, $lt: 작다, $lte: 작거나 같다
      // $in: 포함되어 있다, $nin: 포함되어 있지 않다.
    {$eq: 30} // 조건을 지정할 필드에 관계 연산자를 적용한다.
   }, 
   {_id: 0, name: 1, age: 1}
)

 

 

7. 배열검색

db.col1.find(
   {'etc': // 도큐먼트가 저장된 배열이 저장된 필드
      // $elemMatch는 필드에 할당된 데이터가 도큐먼트가 저장된 배열일 경우 배열 내부 도큐먼트의 필드에 접근한다.
    {$elemMatch:
      {'hobby': 
        {$eq: '등산'}
         }
      }
   }, 
   {_id: 0, etc: 1}
)

 

8. 정규식 활용

db.col1.find( // select name from col1 where name like '%길%'
   {'name':
      // $regex: 정규식을 사용하는 문자열 검색, 부분일치 검색
    // {$regex: '^홍'} // '홍'으로 시작하는
      // {$regex: '매$'} // '매'로 끝나는
      {$regex: '길'} // '길'을 포함하는
   }, 
   {_id: 0, name: 1}
)

 

9. 논리 연산자

 

db.col1.find(
   // 논리 연산자
   // $and => 조건들이 모두 참인 도큐먼트를 찾는다.
   // $or => 조건들 중 하나 이상 참인 도큐먼트를 찾는다.
   // $not => 논리 부정
   // $nor => 조건들 중 하나 이상 거짓인 도큐먼트를 찾는다.
   // 단일 필드의 and 연산은 {$gte: 20, $lte: 30} 방식을 사용하는 것이 편리하다.
  {
      $and: [ // 논리 연산자는 [] 내부에 논리 연산을 실행할 관계 연식을 입력한다.
      {'age':
        {$gte: 20}
         }, // 관계 연산식
      {'age':
        {$lte: 30}
         }  // 관계 연산식
      ]
   },
  {_id: 0, name: 1, age: 1}
)

 

 

10. 관계 연산자

 

db.col1.find(
   // 논리 연산 query의 top level에는 $and, $or, $nor만 사용할 수 있고 $not은 사용할 수 없다.
   // 전체 논리 연산의 실행 결과를 부정하려면 $nor를 사용한다.
  {$nor: // 논리 연산 query의 top level
      [
      {'age': 
            {$not: // 한 개의 관계 연산을 부정하려면 $not을 사용한다.
               {$gt: 20}
            }
      }
      ]
   },
  {_id: 0, name: 1, age: 1}
)

 

 

11. 인덱스

 

db.col1.createIndex(
  {'name': 'text'} // 반드시 'text'를 써야한다.
) // 인덱스를 만든다.
name_text
db.col1.find(
  // {'name': '홍길동'},
  {$text: // name 필드를 지정하지 않아도 인덱스로 검색이 가능하다.
    {$search:
         '홍길동'
      }
   },
  {_id: 0, name: 1, age: 1}
)

 

12. 대소문자 구분 

 

db.col2.find(
  {$text:
    {
         $search: 'mike',
         // $caseSensitive: false // 기본값은 false이고 대, 소문자를 구분하지 않는다.
         $caseSensitive: true // 대, 소문자를 구분한다.
      }
   }
)

13.