728x90
NoSQL을 다루다보면 제목과 같은 일이 제법 빈번히 발생한다.
const ProductSchmea = new mongoose.Schema({
...
comments: [
{
userId: ...,
comment: ...,
createdAt: ...,
updatedAt: ...,
}
]
});
위와 같은 설계를 하는일이 제법 많기때문이다.
상품에 대한 댓글을 위처럼 관리하면 매우 쉽기 때문이다.
그런데 comments를 수정하려면 어떻게 할까...? 가 문제다.
먼저, comments를 추가하는것은 제법 간단하다.
...
try {
const commentInfo = {
userId: ...,
comment: ...,
};
await Prodcut.findOneAndUpdate({ _id: id }, { $push: { comments: commentInfo } }).exec();
} catch(error) {
...
}
...
이런식으로 push해서 넣으면 끝..!
대망의 수정이다.
알고나면, ? 쉽네 뭐야 어떻게 된거지? 라고 할만큼 쉽다.
하지만, 모르면 도저히 그 방법을 찾을수가없다.
...
try {
await Product.findOneAndUpdate(
{ _id: id, 'comments._id': commentId },
{ $set: { 'comments.$.comment': '수정해버림' }
}).exec();
} catch(error) {
...
}
...
포인트는 두가지이다.
1. comment._id를 알아야한다는 것.
2. comments.$.comment
여기서 .$은 javascript의 [n]을 대신해준다.
위의 정보는 은근히 찾기 어려워 이렇게 간단히 주석을 남긴다.
728x90
반응형
'개발, 코딩 > RDB|SQL|NoSQL' 카테고리의 다른 글
Mongo, $project에서 array타입 null체크하여 처리하기 (0) | 2020.04.21 |
---|---|
$text - mongo (0) | 2020.04.07 |
react-native, webview 마스터 (0) | 2019.11.19 |
mongodb, 배열처리하기 (0) | 2019.11.19 |
AWS, s3 이미지 업로드 (0) | 2019.11.19 |