Database
몽고디비에서 Table == collection
recodes, row == document
몽고디비는 데이터베이스와 컬렉션, 다큐먼트로 이루어짐.
테이블 내부의 정보들은 다큐먼트 역할.
| ID | Username | Phone |
|---|---|---|
| 1 | user1 | 010-111 |
| 2 | user2 | 010-222 |
| ID | Title | Content | UserId |
|---|---|---|---|
| 1 | title1 | content1 | 1 |
| 2 | title2 | content2 | 2 |
user: [
{ id:1, Username: user1, Phone:"010-111"},
{ id:2, Username:user2, Phone:"010-222"}
]
Board:[
{ id:1, Title:title1,Content:content1, Username:user1, Phone:"010-111" },
{ id:2, Title:title2, Content:content2, Username:user2, Phone:"010-222" },
.
.
.
]
//장점: 데이터 찾을 때 퍼포먼스가 좋다.//database 조회
> show dbs
//database 접속 및 생성
> use [database 이름]
//현재 사용중인 database 조회
> db
//생성
> db.createCollection("[컬렉션 이름]")
//collection(table) 조회
> show collectuons
//삭제
> db.[컬렉션 이름].drop()
//삽입
> db.[컬렉션 이름].insert({"key": "value"})
//삭제
> db.[컬렉션 이름].remove({"key": "value"}, true)
//수정
//("key1", "value1") 내용 -> ("key2":"value2")로 수정
> db.[컬렉션 이름].update({"key1":,"value1"}, {$set:{"key2","value2"}})
//조회
> db.[컬렉션 이름].find()
//정렬해서 조회(예쁘게 조회)
> db.[컬렉션 이름].find().pretty()
//부분조회 1
//key1이 value인 document 찾기
> db.[컬렉션 이름].find({"key1":"value"})
//부분조회 2
//key1이 value인 key2값 찾기 && id는 출력X
> db.[컬렉션 이름].find({"key1":"value"},{"_id":false,"key2":true})
비교
$eq: 동일한 값
$ne: 다른 값
$gt: 큰 값
$gre: 크거나 같은 값
$lt: 작은 값
$lte: 작거나 같은 값
$in: 배열에 속하는 어떤 값
$nin: 배열에 속하지 않은 어떤 값
요소
$exists
$type
논리
$or
$and
$not
$nor
평가
$mod
$regex: 정규표현식과 일치하는 documnet 선택
$text: 텍스트 검색
$where: javascript
배열
$all: 모든 요소 포함하는 배열
$elemMatch: 지정된 조건과 모두 일치
$size
제한자
$set $unset
$nc $inc
$push $pull
$addToSet
$each
$pop
//데이터베이스 만들기.
use database // -> switched to db database
//collection 만들기
> db.collection.insertOne({name: "홍길동"})
//조회
db.col2.find()
//상세조회
db.col2.find({name: "이규현" })
커서(cursor)란?
for(x=0; x<100; x++)
{db.col3.insertOne({"a":x})}
100개의 데이터를 생성 후
find 사용
{ _id: ObjectId("629566113a5bcee96d63bdc5"), a: 0 }
{ _id: ObjectId("629566123a5bcee96d63bdc6"), a: 1 }
{ _id: ObjectId("629566123a5bcee96d63bdc7"), a: 2 }
{ _id: ObjectId("629566123a5bcee96d63bdc8"), a: 3 }
{ _id: ObjectId("629566123a5bcee96d63bdc9"), a: 4 }
{ _id: ObjectId("629566123a5bcee96d63bdca"), a: 5 }
{ _id: ObjectId("629566123a5bcee96d63bdcb"), a: 6 }
{ _id: ObjectId("629566123a5bcee96d63bdcc"), a: 7 }
{ _id: ObjectId("629566123a5bcee96d63bdcd"), a: 8 }
{ _id: ObjectId("629566123a5bcee96d63bdce"), a: 9 }
{ _id: ObjectId("629566123a5bcee96d63bdcf"), a: 10 }
{ _id: ObjectId("629566123a5bcee96d63bdd0"), a: 11 }
{ _id: ObjectId("629566123a5bcee96d63bdd1"), a: 12 }
{ _id: ObjectId("629566123a5bcee96d63bdd2"), a: 13 }
{ _id: ObjectId("629566123a5bcee96d63bdd3"), a: 14 }
{ _id: ObjectId("629566123a5bcee96d63bdd4"), a: 15 }
{ _id: ObjectId("629566123a5bcee96d63bdd5"), a: 16 }
{ _id: ObjectId("629566123a5bcee96d63bdd6"), a: 17 }
{ _id: ObjectId("629566123a5bcee96d63bdd7"), a: 18 }
{ _id: ObjectId("629566123a5bcee96d63bdd8"), a: 19 }
Type "it" for more
생략해서 보여준다.
갯수를 확인해보면 100개가 맞음.
var cursor = db.col3.find() # cursor라는 변수에 결과를 할당함
cursor # 똑같이 20개 데이터 출력
{ _id: ObjectId("629566113a5bcee96d63bdc5"), a: 0 }
{ _id: ObjectId("629566123a5bcee96d63bdc6"), a: 1 }
{ _id: ObjectId("629566123a5bcee96d63bdc7"), a: 2 }
{ _id: ObjectId("629566123a5bcee96d63bdc8"), a: 3 }
{ _id: ObjectId("629566123a5bcee96d63bdc9"), a: 4 }
{ _id: ObjectId("629566123a5bcee96d63bdca"), a: 5 }
{ _id: ObjectId("629566123a5bcee96d63bdcb"), a: 6 }
{ _id: ObjectId("629566123a5bcee96d63bdcc"), a: 7 }
{ _id: ObjectId("629566123a5bcee96d63bdcd"), a: 8 }
{ _id: ObjectId("629566123a5bcee96d63bdce"), a: 9 }
{ _id: ObjectId("629566123a5bcee96d63bdcf"), a: 10 }
{ _id: ObjectId("629566123a5bcee96d63bdd0"), a: 11 }
{ _id: ObjectId("629566123a5bcee96d63bdd1"), a: 12 }
{ _id: ObjectId("629566123a5bcee96d63bdd2"), a: 13 }
{ _id: ObjectId("629566123a5bcee96d63bdd3"), a: 14 }
{ _id: ObjectId("629566123a5bcee96d63bdd4"), a: 15 }
{ _id: ObjectId("629566123a5bcee96d63bdd5"), a: 16 }
{ _id: ObjectId("629566123a5bcee96d63bdd6"), a: 17 }
{ _id: ObjectId("629566123a5bcee96d63bdd7"), a: 18 }
{ _id: ObjectId("629566123a5bcee96d63bdd8"), a: 19 }