반응형

항상 몽고shell을 부른다고 생각 ,그 안에서 명령어를 사용

 

-mongodb 시작(cmd)

cmd 두개 돌려서 서버 먼저 돌리고

>mongod --dbpath c:\data\db
>mongo

 

로 들어감

C:\Users\USER>mongo localhost:27017

 

Database 생성: use

>use mydb
switched to db mydb
>db //현재 사용중인 데이터 베이스 확인
mydb

 

-콜렉션 자동 생성

> db.movie.insert({"name":"korea"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
mydb 0.000GB

movie라는 컬렉션을 자동으로 생성해주고 키와 value 값을 넣어줌

 

Database 제거: db.dropDatabase()

>db.dropDatabase()
{ "dropped" : "mongodb_tutorial", "ok" : 1 }

 

Collection 생성: db.createCollection()

>db.createCollection(name,options)

 

name 은 생성하려는 컬렉션의 이름이며 option 은 document 타입으로 구성된 해당 컬렉션의 설정값

options 매개변수는 선택적인(Optional) 매개변수로서 생략하셔도 되고, 필요에따라 사용

Parameter Type
Name String
Option Document// 옵션은 문서 형태로

 

Option

Field Type 설명
capped Boolean 이 값을 true 로 설정하면 capped collection 을 활성화 시킵니다. Capped collection 이란, 고정된 크기(fixed size) 를 가진 컬렉션으로서, size 가 초과되면 가장 오래된 데이터를 덮어씁니다. 이 값을 true로 설정하면 size 값을 꼭 설정해야합니다.
autoIndex Boolean 이 값을 true로 설정하면, _id 필드에 index를 자동으로 생성합니다. 기본값은 false 입니다.
size number Capped collection 을 위해 해당 컬렉션의 최대 사이즈(maximum size)를 ~ bytes로 지정합니다.
max number 해당 컬렉션에 추가 할 수 있는 최대 갯수를 설정합니다.
> use test
switched to db test
> db.createCollection("mycollection") //콜렉션생성("콜렉션이름")
{ "ok" : 1 }
> show collections
mycollection

 

Collection 제거: db.COLLECTION_NAME.drop()

>db.COLLECTION_NAME.DROP

 

MongoDB에서는 하나의 Document 저장 시 3가지 메서드 사용

1. INSERT() : Collection에 하나의 Document 최초 저장

2. UPDATE() : 하나의 Collection에서 특정 필드만 수정할 때 사용(필드 단위로 변경)

3. SAVE() : 하나의 Document에서 특정 필드만 변경하더라도, Document 단위로 데이터를 변경

 

 

JSON 타입과 BSON 타입

자바스크립트 형식의 오브젝트 표기법

; Javascript Obect Notation

ex) p = {

eno : 1

,job : "developer"

,company : "xx"

}

 

db.insert(p)

 

BSON ; Binary Serial Object Notation)

 데이터 베이스 내에 저장될때 BSON 데이터로 변환되어 저장

 

데이터 타입
null형 { "name" : null }

undefined형 { "name" : undefined }

boolean형 { "name" : true }

64비트 부동소숫점 { "age" : 21 }

string형 { "name" : "neo" }

objectId형 { "oid" : ObjectId() }

date형 { "regdate" : new Date() }

정규식형 { "name" : /neo/i }

javascript형 { "func" : function() { /- ... *- } }

array형 { "array" : [ 1, 2, 3 ] }

문서형 { "person" : { "name" : "neo" } }


Read

> db.person.findOne()
처음 문서 하나를 조회

 

> db.person.find()
저장된 문서의 전체를 조회



Update

> person1.desc = []
> db.person.update({ name : "neo" }, person1)

 

> var person2 = db.person.findOne({"name" : "neo"});
> person2.desc = {"blood", "B"}

 

Delete

> db.person.remove({ name : "neo" })
컬렉션 내에 이름이 neo인 문서를 삭제
> db.person.remove()
모든 컬렉션의 문서를 삭제

 

-mongodb CRUD

 

Document 추가: db.COLLECTION_NAME.insert(document)

>db.COLLECTION_NAME.insert(document)

> db.books.insert({"name": "NodeJS Guide", "author": "Velopert"})
WriteResult({ "nInserted" : 1 })

> db.books.insert([
... {"name": "Book1", "author": "Velopert"},
... {"name": "Book2", "author": "Velopert"}
... ]);
BulkWriteResult({
      "writeErrors" : [ ],
     "writeConcernErrors" : [ ],
     "nInserted" : 2,
      "nUpserted" : 0,
     "nMatched" : 0,
      "nModified" : 0,
      "nRemoved" : 0,
      "upserted" : [ ]
})

> db.books.find() //컬렉션이 다큐먼트 리스트 확인 명령어

명령어 사용 전 데이터를 추가 할 데이터베이스를 선택

배열형식의 인자를 전달해주면 여러 다큐먼트를 동시에 추가 할 수 있음

 

Document 제거: db.COLLECTION_NAME.remove(criteria, justOne)

두 가지 매개변수

parameter type 설명
*criteria document 삭제 할 데이터의 기준 값 (criteria) 입니다. 이 값이 { } 이면 컬렉션의 모든 데이터를 제거합니다.
justOne boolean 선택적(Optional) 매개변수이며 이 값이 true 면 1개 의 다큐먼트만 제거합니다. 이 매개변수가 생략되면 기본값은 false 로 서, criteria에 해당되는 모든 다큐먼트를 제거합니다.
> db.books.find({"name": "Book1"})
{ "_id" : ObjectId("56c097f94d6b67aafdeb88ac"), "name" : "Book1", "author" : "Velopert" }
> db.books.remove({"name": "Book1"})
WriteResult({ "nRemoved" : 1 })
> db.books.find()
{ "_id" : ObjectId("56c08f3a4d6b67aafdeb88a3"), "name" : "MongoDB Guide", "author" : "Velopert" }
{ "_id" : ObjectId("56c08f474d6b67aafdeb88a4"), "name" : "NodeJS Guide", "author" : "Velopert" }
{ "_id" : ObjectId("56c097f94d6b67aafdeb88ad"), "name" : "Book2", "author" : "Velopert" }

.pretty() : display 모양이 예쁘게 나옴 ㅎㅎ

 

ex)

학생 필드에 이름, 학과, 나이, 취미(배열)로 삽입

> db.stu.insert({"name" : "kim", "dept" : "computer", "age" : 20, "hobby":["kkk","ttt","yyy"]})
WriteResult({ "nInserted" : 1 })
> db.stu.find().pretty()
        { "_id" : ObjectId("5d770c463b5ad95f3a6bdb43"),
          "name" : "kim",
          "dept" : "computer",
          "age" : 20,
          "hobby" : [
                         "kkk",
                         "ttt",
                         "yyy"
           ]
}
db.stu.find()
{ "_id" : ObjectId("5d770c463b5ad95f3a6bdb43"), "name" : "kim", "dept" : "computer", "age" : 20, "hobby" : [ "kkk", "ttt", "yyy" ] }

 

-문서 검색 메소드 

예제1: 모든 다큐먼트 조회

> db.articles.find()

예제2: 다큐먼트를 예쁘게 깔끔하게 조회

> db.articles.find().pretty()

예제3: writer 값이  “Velopert” 인 Document 조회

> db.articles.find( { “writer”: “Velopert” } ).pretty()

예제4: likes 값이 30 이하인 Document 조회

> db.articles.find( { “likes”: { $lte: 30 } } ).pretty()

 

 

 Query 연산자

  • mongoDB 에서도 원하는 데이터를 찾기 위해 연산자를 사용. 
  • 연산자의 종류는 비교(Comparison), 논리(Logical), 요소(Element), 배열(Array) 등 
  • <키>:<값> / <키>:{<연산자>:<값>}
  •  
operator 설명
$eq {<키>:{$eq:<값>}} (equals) 주어진 값과 일치하는 값
$gt  {<키>:{$gt:<값>}} (greater than) 주어진 값보다 큰 값
$gte {<키>:{$gte:<값>}} (greather than or equals) 주어진 값보다 크거나 같은 값
$lt {<키>:{$lt:<값>}} (less than) 주어진 값보다 작은 값
$lte {<키>:{$lte:<값>}} (less than or equals) 주어진 값보다 작거나 같은 값
$ne {<키>:{$ne:<값>}} (not equal) 주어진 값과 일치하지 않는 값
$in {<키>:{$in:<값>}} 주어진 배열 안에 속하는 값
$nin {<키>:{$nin:<값>}} 주어빈 배열 안에 속하지 않는 값

예제5: likes 값이 10보다 크고 30보다 작은 Document 조회

> db.articles.find( { “likes”: { $gt: 10, $lt: 30 } } ).pretty()

예제6: writer 값이 배열 [“Alpha”, “Bravo”] 안에 속하는 값인 Document 조회

> db.articles.find( { “writer”: { $in: [ “Alpha”, “Bravo” ] } } ).pretty()

논리 연산자

operator 설명
$or 주어진 조건중 하나라도 true 일 때 true
$and 주어진 모든 조건이 true 일 때 true
$not 주어진 조건이 false 일 때 true
$nor 주어진 모든 조건이 false 일때 true

예제7: title 값이 “article01” 이거나, writer 값이 “Alpha” 인 Document 조회

> db.articles.find({ $or: [ { “title”: “article01” }, { “writer”: “Alpha” } ] })

예제8: writer 값이 “Velopert” 이고 likes 값이 10 미만인 Document 조회

> db.articles.find( { $and: [ { “writer”: “Velopert” }, { “likes”: { $lt: 10 } } ] } )
> db.articles.find( { “writer”: “Velopert”, “likes”: { $lt: 10 } } )
반응형

+ Recent posts