안녕하세요
MongoDB - 게시물 번호 부여, 관계형 데이터 베이스 본문
관계형스러운 데이터 저장 방식이란?
게시물과 댓글을 한 collection에 모아서 저장하지 않고
게시물 collection
댓글 collection을 구분하여 저장합니다.
1번 게시물과 1번 게시물에 있는 댓글들을 가져오고 싶습니다.
1번 게시물에 작성되는 댓글에는 1번 게시물이 부모라는 표시를 남겨줍니다.
[{ id: 1, 제목: "1번게시물"}]
[{ id: 1, 댓글내용: "1번게시물에달린댓글", 부모게시물: 1}]
1번 게시물을 가져오고,
부모게시물이 1번인 댓글들을 가져옵니다.
이렇게 분산되어 있지만 연결된 방식으로 정보들을 나누어 찾아옵니다.
게시물에 유니크한 id를 주는 방법
id를 저장할 collection를 별도로 만듭니다. counter라는 이름의 collection을 만들었습니다.
생성한 collection에 데이터를 추가합니다. {name:"게시물수", totalPost: 0} 과 같이 만들어 주었습니다.
데이터 수정하기
id를 저장한 데이터를 불러옵니다.
db.collection("counter").findOne({ name: "게시물수" }, (에러, 결과) => {
const 총게시물갯수 = 결과.totalPost;
=> counter collection에서 {name:'게시물수'} 를 찾는다. 그리고 총게시물갯수 변수에 저장한다.
생성한 id를 넣어 게시물을 데이터에 추가합니다.
db.collection("post").insertOne({ _id: 총게시물갯수, 제목: 요청.body.title, 날짜: 요청.body.date }, (에러, 결과) => {
totalPost의 값을 +1 해줍니다.
db.collection("counter").updateOne({ 수정할데이터 }, { $inc: { 수정값 } }, (에러, 결과) => {
if (에러) return console.log(에러);
=> 결과.totalPost 의 값을 +1 해주어야 다음에 생성할 때 id가 겹치지 않는다.
$set 연산자: 바꿔주세요. $inc: 증가시켜주세요
게시물을 작성해보면 id가 올라가는 것을 확인할 수 있습니다.
'스터디 > 코딩애플' 카테고리의 다른 글
MongoDB - 상세페이지 (0) | 2023.01.03 |
---|---|
MongoDB - 데이터 삭제 요청 (0) | 2023.01.01 |
MongoDB - 데이터베이스에 데이터 추가하기 (0) | 2022.12.31 |
리액트 - 모달 창 바깥 클릭하면 창 닫기 (0) | 2022.12.31 |
MongoDB - Atlas 무료 데이터베이스 연결하기 (0) | 2022.12.31 |