항상 몽고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 } } )
'Database Study > MongoDB' 카테고리의 다른 글
[Mongodb]웹서비스컴퓨팅_9주차 (0) | 2019.12.03 |
---|---|
[Mongodb]웹서비스컴퓨팅_7주차 (0) | 2019.10.15 |
[Mongodb]웹서비스컴퓨팅_6주차 (0) | 2019.10.01 |
[Mongodb]웹서비스컴퓨팅_5주차 (0) | 2019.09.24 |
[Mongodb]웹서비스컴퓨팅_4주차 (0) | 2019.09.17 |