본문 바로가기

과목/빅데이터

How to delete the embedded document in mongodb

{

"_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")}}}

);