- 기본적인 JavaScript 사용방법을 알아야함
- 사용하려는 컬렉션의 스키마 정의 Model 파일이 생성되어 있어야함
const mongoose = require("mongoose");
const User = require("./model/user");
const url = "mongodb+srv://mongoDB_URI";
!async function() {
await mongoose.connect(url, { dbName: "example" });
User.create({ name: "홍길동", age: 10, type: "내국인", country: "KOR" });
}();
mongoDB는 dbName에 설정한 example DB 또는 users 컬렉션이 없어도 자동으로 생성 후 문서를 추가합니다.
만약 여러개의 문서를 생성하고 싶다면 다음과 같이 생성할 수 있습니다.
User.insertMany([
{ name: "홍길동", age: 10, type: "내국인", country: "KOR" },
{ name: "하이", age: 10, type: "외국인", country: "JPN" }
]);
const mongoose = require("mongoose");
const User = require("./model/user");
const url = "mongodb+srv://mongoDB_URI";
!async function() {
await mongoose.connect(url, { dbName: "example" });
// 해당 컬렉션의 모든 문서를 불러오기
const result = await User.find({});
// 해당 컬렉션의 매칭되는 모든 문서를 불러오기 (Array 반환)
const result = await User.find({ name: "홍길동" });
// 해당 컬렉션의 매칭되는 문서 하나만 불러오기 (최초 매칭되는 한개의 문서만 반환)
const result = await User.findOne({ name: "홍길동" });
// 해당 컬렉션의 _id 값과 매칭되는 문서 하나를 불러오기
const result = await User.findById("62d824a7296e056de86cfb34");
}();
CRUD 관련 function을 사용하면 결과는 Query라는 객체가 만들어지게 되고, 그 상태에서 추가로 mongoose에 내장된 Query 객체의 function들을 추가로 chaining 해서 사용 가능하다.
READ에서 사용할 수 있는 Query 객체의 추가 function들은 나중에 따로 다룰 예정.
- updateOne, Many는 기본적으로 $set으로 설정되어 있다.
- UPDATE 할때는 validating 기능의 default값이 false이기 때문에 유효성 검사를 하기 위해서는 true로 바꿔 주어야 한다.
- updateOne, Many의 반환값: acknowledged, modifiedCount, upsertedId, upsertedCount, matchedCount
const mongoose = require("mongoose");
const User = require("./model/user");
const url = "mongodb+srv://mongoDB_URI";
!async function() {
await mongoose.connect(url, { dbName: "example" });
// 해당 컬렉션의 매칭되는 한개의 문서를 업데이트
const result = await Account.updateOne(
{ name: "홍길동" }, // update 해야하는 문서를 찾는 조건부
{ name: "Casin", age: "20" }, // update 해야하는 데이터
{ runValidators: true }, // 모델링 유효성 검사 사용
);
}();
- findOne(ById)AndUpdate의 리턴값은 찾은 문서가 반환됨.
- 반환값은 update 되기 전의 데이터가 나오며 바뀐 후의 문서를 반환하려면 returnDocument: "after"로 설정해 주어야 한다.
const mongoose = require("mongoose");
const User = require("./model/user");
const url = "mongodb+srv://mongoDB_URI";
!async function() {
await mongoose.connect(url, { dbName: "example" });
// 해당 컬렉션의 매칭되는 한개의 문서를 업데이트
const result = await User.findByIdAndUpdate(
"62d824a7296e056de86cfb34", // update 해야하는 문서를 찾는 조건부
{ age: 30 }, // update 해야하는 데이터
{ returnDocument: "after" } // 반환 순서 설정 기본값: before
);
}();
- deleteOne은 매칭되는 단일 문서를 삭제함
- deleteMany는 매칭되는 모든 문서를 삭제함
- deleteOne, Many를 사용해서 문서를 제거하면 acknowledged:[boolean], deleteCount: [number] 가 반환됨
const mongoose = require("mongoose");
const User = require("./model/user");
const url = "mongodb+srv://mongoDB_URI";
!async function() {
await mongoose.connect(url, { dbName: "example" });
// ...deleteOne({ _id: "62d824a7296e056de86cfb34" })
const result = await deleteOne({ name: "홍길동" });
}();
- deleteOne과 다르게 find...AndDelete는 삭제되는 문서가 반환됨
const mongoose = require("mongoose");
const User = require("./model/user");
const url = "mongodb+srv://mongoDB_URI";
!async function() {
await mongoose.connect(url, { dbName: "example" });
// 해당 컬렉션에 매칭되는 문서 하나를 찾은다음 삭제
const result = await findOneAndDelete({ name: "홍길동" });
// 해당 컬렉션에 _id값과 매칭되는 문서 하나를 찾은다음 삭제
const result = await findByIdAndDelete("62e0bfbe3bb94ca49c103e06");
}();
추후 스키마&모델링 포스팅때 다룰 예정.