updateOne 추가 문법
대충 { like : 10 } 이런 식으로 숫자 하나만 기록해봄
db.collection('컬렉션명').updateOne(
{ _id : new ObjectId('수정할 document _id') },
{ $set: { like : 1 } }
)
이렇게 코드를 짜면 like 항목이 1로 변합니다.
$set을 쓰면 기존 값을 덮어쓰기해줘서 그럼
db.collection('컬렉션명').updateOne(
{ _id : new ObjectId('수정할 document _id') },
{ $inc: { like : 1 } }
)
그게 싫으면 $inc 하면 됨
그러면 1로 덮어쓰기가 아니라 +1을 해줬음
-1 적으면 -1 해줌
그래서 숫자 증감해주고 싶을 때는 $inc로 변경하면 되겠습니다.
여러 document 동시 수정은 updateMany
동시에 여러개의 document를 수정하고 싶을 때 updateOne 여러줄 써도 되긴하는데 updateMany 쓰면 편할 수 있음
db.collection('컬렉션명').updateMany(
{ title : '멍청아' },
{ $set: { title : '착한친구야' } }
)
이렇게 코드짜면 이 컬렉션 안에 title이 '멍청아'로 되어있는 모든 document를 찾아서
title 항목을 '착한친구야'로 덮어쓰기를 해줌.
조건에 맞는 것만 updateMany하기
가끔가다가 정확히 이거랑 일치하는 document가 아니라
특정 조건을 만족하는 document를 전부 수정하고 싶을 때가 있습니다.
예를 들어 like 숫자가 10이상인 document를 전부 찾아서 수정하고 싶은 경우도 있을텐데
그런 경우는 어떻게 하냐면 $gt, $lt 연산자를 활용해서 조건문을 입력하면 됩니다.
db.collection('컬렉션명').updateMany(
{ like : { $gt: 5 } },
{ $set: { like : 100 } }
)
이렇게 작성하면 like 항목이 5보다 큰 document만 전부 필터링한 다음
like 항목을 100으로 일괄 수정해버립니다.
$gt 는 greater than의 약자라서 '초과'를 뜻하고
$gte 는 equal이 뒤에 붙었다고 생각하면 되어서 '이상'인걸 뜻합니다.
$lt 는 lesser than의 약자라서 '미만'을 뜻하고
$lte 는 님들이 생각하는 그거 맞음
$ne 쓰면 not equal이라는 뜻이라 예를 들어 like가 10이 아닌 것만 필터링해서 수정할 수도 있습니다.
'컴퓨터 프로그래밍 > Node.js' 카테고리의 다른 글
[Node.js] 삭제기능 만들기 (0) | 2023.11.08 |
---|---|
[Node.js] AJAX, query string (0) | 2023.11.08 |
[Node.js] 수정기능 만들기 1 (0) | 2023.11.08 |
[Node.js] 상세페이지 만들기 2 (링크 만들기) (0) | 2023.11.07 |
[Node.js] 상세페이지 만들기1 (URL parameter) (0) | 2023.11.07 |