과목/빅데이터
How to delete the embedded document in mongodb
원펀만
2018. 9. 14. 12:40
{
"_id" : ObjectId("5b83e0491ca61552dca474cd"),
"title" : "9",
"updated" : [ ],
"date" : ISODate("2018-08-27T20:28:09.566+09:00"),
"count" : 4,
"comments" : [
{
"name" : "글쓴이",
"memo" : "1",
"_id" : ObjectId("5b9b2ae6f195ca40bcc43802"),
"date" : ISODate("2018-09-14T12:28:38.985+09:00")
}
],
"contents" : "9",
"__v" : 2
}
findOneAndDelete 함수를 아래처럼 쓰면 embedded document만 삭제되는 게 아니라 글이 통째로 삭제된다.
db.collection.findOneAndDelete(
{_id:ObjectId(), comments:{$elemMatch:{_id:ObjectId()}}}
)
update 함수에서 $pull 명령어를 같이 써줘야 한다.
우선 ObjectId로 글을 찾고, $pull 명령어와 댓글의 ObjectId를 써서 댓글에 접근하고 삭제한다.
db.boards.update(
{_id:ObjectId("5b83e0491ca61552dca474cd")},
{$pull:{comments:{_id:ObjectId("5b9b2ae8f195ca40bcc43803")}}}
);