NOSQL 데이터베이스 중 가장 유명하고 무난하다. 따로 스키마 설계가 필요 없다.
아래는 처음 접했을 때 조금 헷갈렸던 용어들이다.
document
: RDBMS에서의 record
= row
와 비슷한 개념이라고 생각하면 된다.예시
{
"_id": ObjectId("5099803df3f4948bd2f98391"),
"key1": "value1",
"key2": "value2",
}
ObjectedId
: RDBMS의 pk역할을 하여 각 document
의 유일성을 보장한다.ODM(Object Data Modeling)의 일종으로 Node.js 상에서 MongoDB를 쉽게 다룰 수 있는 기능을 제공한다.
npm install mongoose
백엔드에서 연결
const mongoose = require("mongoose");
require("dotenv").config(); // to use process.env.MONGO_URI
// mongoDB 연결
mongoose
.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
})
.then(() => {
console.log("Connected to MongoDB");
})
.catch((err) => {
console.log(err);
});
MONGO_URI = mongodb://<user>:<pw>@<host>:<port number>/<db name>
데이터 스키마 작성
처음에 이부분이 헷갈렸다. 스키마가 필요 없다면서 왜...?
그러나 이건 MongoDB에서 필요하다기 보다는 mongoose를 사용하기 위해서 정의해주어야 한다. 자료형이 확실하지 않은 경우는 mongoose.Schema.Types.Mixed
로 지정해줄 수 있다.
const mongoose = require("mongoose");
// 스키마 생성
const testSchema = new mongoose.Schema(
{
data1: String,
data2: Number,
unknownObj: mongoose.Schema.Types.Mixed,
},
{ timestamps: true }
);
모델
// 모델 생성 후 export
module.exports = mongoose.model("Testfile", RecordSchema);
Testfile.find()
등과 같이 사용 가능하다.객체 생성
const newtestfile = new Testfile({
data1: "data",
data2: 1,
unknownObj: {inputData:3, outputData:9},
});
생성한 객체(document) 저장
newtestfile.save().then(()=> console.log("saved"));