선행작업
mongoDB 접속
$ mongosh mongodb://localhost:27017/admin?authSource=admin --username jamie
Database 전환
> use testDB
switched to db testDB
- Database가 없는 경우, MongoDB는 해당 Database에 대한 데이터를 처음 저장할 때, 데이터베이스를 생성함
- 즉, testDB라는 Database는 데이터가 아직 안들어있으므로 생성되지 않았고, 데이터 인입시에 생성되는 구조인 듯
Single Document 삽입
- MongoDB는 데이터를 JavaScript Object Notation - JSON의 이진 형식인 BSON 형태로 저장
- Document는 Collections에 저장됨
- Collection도 Database와 마찬가지로, 없는 경우 해당 Collection에 대한 데이터를 처음 저장할 때, Collection을 생성함
- Document가 _id 필드를 지정하지 않으면, MongoDB는 ObjectID값이 있는 _id 필드를 추가
- 삽입할 데이터
- inventory Collection에 새 Document를 삽입
db.inventory.insertOne(
{ "item" : "canvas",
"qty" : 100,
"tags" : ["cotton"],
"size" : { "h" : 28, "w" : 35.5, "uom" : "cm" }
}
)
- 삽입 : ObjectID를 반환하는 것을 확인할 수 있음
> db.inventory.insertOne(
... { "item" : "canvas",
..... "qty" : 100,
..... "tags" : ["cotton"],
..... "size" : { "h" : 28, "w" : 35.5, "uom" : "cm" }
..... }
... )
{
acknowledged: true,
insertedId: ObjectId("5fc5d9c60e08d0dc37390776")
}
Dynamic Schemas(동적 스키마)
- SQL의 Table과 달리 MongoDB의 Collection에는 동적 스키마가 있음
- 즉, Single(단일) Collection은 모양이 다른 문서를 저장할 수 있음(예, 다른 필드 및 Value Type)
- SQL과 달리 필드를 추가/제거 하거나 Type을 수정하는데 DDL 작업이 필요하지 않음 → Document를 직접 Update하면 됨
- MongoDB는 Dynamic Collection 정의를 지원하지만, Collection의 Document에 대해 균일한 스키마를 적용할 수도 있음(3.6 ~) Schema Validation Json 참고
출처
MongoDB 공식 가이드 - https://docs.mongodb.com/guides/server/insert/
MongoDB 공식 FAQ - https://docs.mongodb.com/manual/faq/fundamentals/