1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | { "_id" : ObjectId("5b77cf25cdc3bb21d0354be2"), "title" : "newnew", "updated" : [ ], "date" : ISODate("2018-08-18T16:47:49.841+09:00"), "count" : 389, "contents" : "new", "__v" : 18, "writer" : null, "comments" : [ { "name" : "글쓴이", "memo" : "!!!", "_id" : ObjectId("5b7be66d9ff77a3834943b8b"), "date" : ISODate("2018-08-21T19:16:13.788+09:00") } ], } | cs |
comments Array field의 한 요소를 선택하고 그 요소에 대한 특정 field를 수정하고 싶다면
findOneAndUpdate()를 쓴다.
첫번째 객체로 찾고자 하는 field에 대한 설정을 한다. 첫 객체의 _id는 document의 id이다.
찾은 값을 바탕으로 $set을 쓴다. 찾은 comment의 한 요소를 특정하고 memo에 !!!을 써준다.
arrayFilters는 _id로 찾은 document에서 입력된 _id와 일치하는 것을 찾는다.
1. document를 _id로 찾고
2. arrayFilter에서 배열의 요소 중에 _id와 일치하는 것을 찾고
3. 찾은 배열 요소의 memo에 들어갈 값을 설정해준다.
1 2 3 4 5 6 7 8 | db.boards.findOneAndUpdate( { _id:ObjectId("5b77cf25cdc3bb21d0354be2") }, {$set:{"comments.$[element].memo":'!!!'}}, {arrayFilters:[{"element._id":ObjectId("5b7be66d9ff77a3834943b8b")}]} ) | cs |
https://docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/
'과목 > 빅데이터' 카테고리의 다른 글
How to delete the embedded document in mongodb (0) | 2018.09.14 |
---|---|
Mongoose에서 findOneAndUpdate 사용하기 (0) | 2018.08.22 |
MongoDB update, findAndModify (0) | 2018.08.15 |
MongoDB 문장 속에 있는 일치하는 단어 찾기 regex pattern for finding a specific word that belong somewhere. (0) | 2018.08.11 |
NoSQL RDBMS 비교 (0) | 2018.07.28 |