Lsiron
MongoDB 구조 본문
몽고디비(MongoDB)는 NoSQL 데이터베이스 중 하나로, 데이터를 유연하게 저장하고 관리할 수 있도록 설계되었다. MongoDB의 데이터 구조는 데이터베이스, 컬렉션, 그리고 다큐먼트의 3층 구조로 이루어져 있다.
1. 데이터베이스 (Database)
MongoDB의 최상위 구조이다. 하나의 MongoDB 서버에는 여러 개의 데이터베이스가 존재할 수 있다. 각 데이터베이스는 서로 독립적이며, 데이터베이스 간에는 데이터의 공유가 이루어지지 않는다.
2. 컬렉션 (Collection)
데이터베이스 안에는 여러 개의 컬렉션이 존재할 수 있다. 컬렉션은 RDBMS의 테이블과 유사한 개념으로, 다큐먼트들을 그룹화한 것이다. 컬렉션은 스키마가 고정되어 있지 않으며, 서로 다른 구조의 다큐먼트들을 저장할 수 있다.
3. 다큐먼트 (Document)
컬렉션 안에는 여러 개의 다큐먼트가 존재한다. 다큐먼트는 JSON과 유사한 형식의 BSON(Binary JSON)으로 저장된다.
{name : "Lsiron" , age : 28, status : "S"} ==> ex) name 필드와 Lsiron 벨류값이라고 부른다. (이 필드는 MySQL의 컬럼과 대응된다.)
다큐먼트는 필드와 값의 쌍으로 이루어지며, 각 다큐먼트는 고유의 _id 필드를 가지고 있어 식별된다. 다큐먼트는 서로 다른 구조를 가질 수 있어 유연성이 높다.
사용법은 node.js 기준으로 설명하겠다.
npm 사이트로 가서 Connect to MongoDB 단락의 기본 코드를 긁어와주자.
https://www.npmjs.com/package/mongodb
const { MongoClient } = require('mongodb');
const url = '몽고디비주소'; //내 mongodb 주소
const client = new MongoClient(url);
const dbName = '몽고디비이름'; //내 mongodb 이름
async function main() {
await client.connect();
const db = client.db(dbName);
const collection = db.collection('documents');
return 'done.';
}
이러면 나의 mongodb와 연결이 된 것이다.
굳이 mongodb에 들어가지 않아도 Database 목록과 Collection 목록 그리고 Document 목록을 확인 할 수 있다.
1. 데이터베이스 (Database)
const { MongoClient } = require('mongodb');
async function listDatabases() {
const uri = '몽고디비주소';
const client = new MongoClient(uri);
try {
await client.connect();
const databasesList = await client.db().admin().listDatabases();
return databasesList.databases;
} finally {
await client.close();
}
}
찍어보면 [ 'admin' , 'config' , 'local' , '디비' ] 이런 식으로 배열로 나옴 admin, config, local은 기본 DB들임
2. 컬렉션 (Collection)
async function listCollections(databaseName) {
const uri = '몽고디비주소';
const client = new MongoClient(uri);
try {
await client.connect();
const db = client.db(몽고디비이름);
const collections = await db.listCollections().toArray();
return collections;
} finally {
await client.close();
}
}
찍어보면 [ '컬렉션' ] 이런 식으로 배열로 나옴
3. 다큐먼트 (Document)
async function listDocuments(databaseName, collectionName) {
const uri = '몽고디비주소';
const client = new MongoClient(uri);
try {
await client.connect();
const collection = client.db(몽고디비이름).collection(컬렉션이름);
const documents = await collection.find({}).toArray();
return documents;
} finally {
await client.close();
}
}
찍어보면 [{ '_id' : ObjectId('...'), 'hello' : 'wolrd' }] 이런 식으로 배열 안의 객체로 나옴
'데이터베이스 > MongoDB' 카테고리의 다른 글
MongoDB 쿼리연산자 (0) | 2024.07.07 |
---|---|
MongoDB 다뤄보기(insert, find, update, delete, query) (0) | 2024.07.04 |
MongoDB 데이터? BSON? (0) | 2024.07.04 |
MongoDB IP 화이트리스트 추가, db접속 오류 (0) | 2024.06.16 |