Tip! 추가 자료
key-value
로 이뤄져있음# MongoDB Sample Document
{
"_id": ObjectId("5099803df3f4948bd2f98391"),
"username": "velopert",
"name": { first: "M.J.", last: "Kim" }
}
_id
, username
, name
은 key이고 그 오른쪽에 있는 값들은 value_id
는 12bytes의 hexadecimal 값으로서, 각 Document의 유일함(Uniqueness)을 제공구조(Schema)를 디자인 할 때 고려사항
예제
{
_id: POST_ID,
title: POST_TITLE,
content: POST_CONTENT,
username: POST_WRITER,
tags: [ TAG1, TAG2, TAG3 ],
time: POST_TIME
comments: [
{
username: COMMENT_WRITER,
mesage: COMMENT_MESSAGE,
time: COMMENT_TIME
},
{
username: COMMENT_WRITER,
mesage: COMMENT_MESSAGE,
time: COMMENT_TIME
}
]
}
inserOne
과 createIndex
두 명령어만이 새로운 collection을 만들 수 있음db.test.insertOne( { x: 1 } )
db.test1.createIndex( { y: 1 } )
db.createCollection( <name>,
{
capped: <boolean>,
timeseries: { // Added in MongoDB 5.0
timeField: <string>, // required for time series collections
metaField: <string>,
granularity: <string>
},
expireAfterSeconds: <number>,
autoIndexId: <boolean>,
size: <number>,
max: <number>,
storageEngine: <document>,
validator: <document>,
validationLevel: <string>,
validationAction: <string>,
indexOptionDefaults: <document>,
viewOn: <string>, // Added in MongoDB 3.4
pipeline: <pipeline>, // Added in MongoDB 3.4
collation: <document>, // Added in MongoDB 3.4
writeConcern: <document>
}
)
db.users.insert({username: "smith"})
insert
명령어를 실행하는 동시에 만약 users라는 collection이 없으면 자동 생성find
명령을 통하여 DB에 있는 데이터를 읽을 수 있음db.users.find()
# result
[
{
"_id": {"$oid": "61873b253270f00a2c30c31d"},
"username": "smith"
},
{
"_id": {"$oid": "61873bb53270f00a2c30c31f"},
"username": "jones"
}
]
db.users.find({username: "jones"})
# result
[
{
"_id": {"$oid": "61873bb53270f00a2c30c31f"},
"username": "jones"
}
]
# and 조건
db.users.find({ $and: [
... { _id: ObjectId("552e458158cd52bcb257c324") },
... { username: "smith" }
... ] })
# or 조건
db.users.find({ $or: [
... { username: "smith" },
... { username: "jones" }
... ]})
$set
명령어를 사용하여 업데이트 가능db.users.update({username: "smith"}, {$set: {country: "Canada"}})
update
구분 사용 시 주의 할 점, $set
를 사용하지 않고 아래와 같이 명령어를 실행하면 username이 smith라는 document는 country: "Canada" 인 document로 대체됨db.users.update({username: "smith"}, {country: "Canada"})
$set
을 이용하여 업데이트 할 수 있지만 매번마다 모든 document를 다시 써야 하는 번거로움이 있음$addToSet
이나 $push
를 사용하면 됨db.users.update( {"favorites.movies": "Casablanca"},
... {$addToSet: {"favorites.movies": "The Maltese Falcon"} },
... false,
... true )
$addToSet
에는 두 개의 파라미터가 필요한데 첫번째는 만약 존재하지 않으면 insert
할지 결정하고 두번째 파라미터는 여러개를 업데이트 할지 결정db.users.remove()
db.users.remove({"favorites.cities": "Cheyenne"})
remove
명령어는 기본적으로 contents을 지우는 역할을 함drop()
명령어를 써야함