pull not working
안녕하세요!
항상 강의 잘 듣고 있습니다.
감사합니다. 질문이 너무 많은 거 같아 죄송하네요..


저같은 경우에는 comment schema의 user를 사진과 같이 구현하였습니다.
그렇기에 { $pull: { comments: { user: { _id: mongoose.Types.ObjectId(userId) } } } } 이와 같이 filter를 주었습니다.
그런데 pull이 작동을 하지 않습니다. 즉, 블로그의 comments의 해당 user가 남긴 댓글이 남아있습니다.
해결 방안을 찾기 위해 많이 고민해보았지만 방법을 찾지 못하고 질문을 남깁니다.

위 사진은 mongoose debug 내용과 blog를 console로 찍은 사진입니다.
또한 저의 깃허브 주소도 첨부하겠습니다. https://github.com/onejaejae/learn_mognoDB
감사합니다 :)
답변 2
0
아 강의에서 보여드렸던 스키마와 다르네요.
{ $pull: { comments: { "user._id": userId } } }
보여주신 스키마의 경우 이렇게 해주시면 됩니다.
강의에서는 제 기억으로 중간에 스키마를 변경했던거 같아요. "User 삭제하기"의 전 강의에 몽고디비 컴파스로 블로그를 조회하는데요. 여기서 보면 blog의 comments의 user에 user객체를 저장하지 않고 userId를 저장했어요. 그래서 { $pull: { comments: { user: userId } } }로 해도 됬었습니다. 여러가지 경우를 보여드리려고 스키마를 수정하다보니 혼선이 있었던거 같아요! 만약 user가 단일 필드가 아니고 객체이면 위에 언급했던 방식으로 $pull 하시면 되구요. 객체 안에 여러 필드를 조건으로 할거면 arrayFilter 사용하시면 됩니다!
그리고 탐색할 때 mongoose.Types.ObjectId(userId) 이런식으로 변환 작업을 안해줘도 됩니다! mongoose가 알아서 변환 해줍니다 :)
0
Dev님 안녕하세요 :)
음 $pull: {"comments.user._id": userId } 이렇게 해보실 수 있나요?
0
위와 같이 변경하여 진행하였더니 아래와 같은 에러가 발생합니다.
{
"message": "Cannot use the part (user) of (comments.user._id) to traverse the element ({comments: [ { user: { name: { first: \"Arnold\", last: \"Simonis\" }, _id: ObjectId('6086de580c64a50f5ca5a1c4'), username: \"Jimmie.Morar28\" }, _id: ObjectId('6086de620c64a50f5ca5a381'), content: \"Ullam tempore et et temporibus.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451490855), createdAt: new Date(1619451490855) }, { user: { name: { first: \"Melissa\", last: \"Armstrong\" }, _id: ObjectId('6086de580c64a50f5ca5a1c5'), username: \"Lula_Roberts56\" }, _id: ObjectId('6086de620c64a50f5ca5a387'), content: \"Accusantium aliquid ipsum velit.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451490878), createdAt: new Date(1619451490878) }, { user: { name: { first: \"Melissa\", last: \"Armstrong\" }, _id: ObjectId('6086de580c64a50f5ca5a1c5'), username: \"Lula_Roberts56\" }, _id: ObjectId('6086de630c64a50f5ca5a38d'), content: \"Fugiat perferendis esse autem eaque consequatur et ab voluptatum.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451491239), createdAt: new Date(1619451491239) }, { user: { name: { first: \"Kailee\", last: \"Skiles\" }, _id: ObjectId('6086de580c64a50f5ca5a1c7'), username: \"Ressie_Ernser433\" }, _id: ObjectId('6086de630c64a50f5ca5a3ab'), content: \"Quasi ratione rerum occaecati totam.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451491612), createdAt: new Date(1619451491612) }, { user: { name: { first: \"Garrick\", last: \"Marks\" }, _id: ObjectId('6086de580c64a50f5ca5a1c9'), username: \"Johnathan_Harber60\" }, _id: ObjectId('6086de630c64a50f5ca5a3cd'), content: \"Aut sit hic et eveniet reprehenderit ducimus aut.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451491828), createdAt: new Date(1619451491828) }, { user: { name: { first: \"Gerardo\", last: \"Rippin\" }, _id: ObjectId('6086de580c64a50f5ca5a1ca'), username: \"Olin1175\" }, _id: ObjectId('6086de640c64a50f5ca5a3d9'), content: \"Autem et est nihil perspiciatis vero vel molestias ut.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451492059), createdAt: new Date(1619451492059) }, { user: { name: { first: \"Gerardo\", last: \"Rippin\" }, _id: ObjectId('6086de580c64a50f5ca5a1ca'), username: \"Olin1175\" }, _id: ObjectId('6086de640c64a50f5ca5a3f1'), content: \"Delectus autem magni qui quibusdam ea eum.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451492229), createdAt: new Date(1619451492229) }, { user: { name: { first: \"Raquel\", last: \"Carter\" }, _id: ObjectId('6086de580c64a50f5ca5a1cb'), username: \"Lazaro.Dietrich98\" }, _id: ObjectId('6086de640c64a50f5ca5a3ff'), content: \"Est quis hic molestiae culpa ab eum corrupti assumenda.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451492365), createdAt: new Date(1619451492365) }, { user: { name: { first: \"Raquel\", last: \"Carter\" }, _id: ObjectId('6086de580c64a50f5ca5a1cb'), username: \"Lazaro.Dietrich98\" }, _id: ObjectId('6086de640c64a50f5ca5a403'), content: \"Aut aut sed harum.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451492383), createdAt: new Date(1619451492383) }, { user: { name: { first: \"Orlo\", last: \"Prohaska\" }, _id: ObjectId('6086de580c64a50f5ca5a1cc'), username: \"Berniece4095\" }, _id: ObjectId('6086de640c64a50f5ca5a407'), content: \"Doloribus officiis vel expedita rerum repellendus aliquam.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451492398), createdAt: new Date(1619451492398) }, { user: { name: { first: \"Orlo\", last: \"Prohaska\" }, _id: ObjectId('6086de580c64a50f5ca5a1cc'), username: \"Berniece4095\" }, _id: ObjectId('6086de640c64a50f5ca5a409'), content: \"Placeat nostrum rerum commodi mollitia.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451492404), createdAt: new Date(1619451492404) }, { user: { name: { first: \"Orlo\", last: \"Prohaska\" }, _id: ObjectId('6086de580c64a50f5ca5a1cc'), username: \"Berniece4095\" }, _id: ObjectId('6086de640c64a50f5ca5a40f'), content: \"Voluptas et sed sed.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451492500), createdAt: new Date(1619451492500) }, { user: { name: { first: \"Orlo\", last: \"Prohaska\" }, _id: ObjectId('6086de580c64a50f5ca5a1cc'), username: \"Berniece4095\" }, _id: ObjectId('6086de640c64a50f5ca5a417'), content: \"Natus officiis quasi veritatis minus exercitationem libero ut.\", blog: ObjectId('6086de5a0c64a50f5ca5a290'), updatedAt: new Date(1619451492591), createdAt: new Date(1619451492591) } ]})"
}
option usecreateindex is not supported 오류 나면은
0
163
1
Schemaless 특성을 재생시 검은화면이 나와요
0
258
1
user 내장 시 ref 필드 필요성
0
257
1
await 관련해서 질문드릴게 있습니다!!
0
306
2
섹션6의 3번째 강의 faker파일이 어디있나요?
0
321
1
$elemMatch 질문이 있습니다.
0
252
1
DB 업데이트에 실패했을 상황에서 대처는 어떻게 할 수 있나요.
2
778
2
블로그에 user 데이터를 추가하는 방법에 대해서
0
243
1
blog 데이터 생성시 user 관련 오류
0
363
1
age 예외 처리를 별도로 하신 이유가 궁금합니다.
2
314
2
delete 메소드가 많은 이유가 궁금합니다.
0
185
1
unique validation 처리
0
302
1
updateMany에서 user._id를 못찾는 상황
1
404
1
find() 가 리턴하는 instance member
1
440
3
몽고 db를 백업방법을 부탁합니다.
0
611
1
인덱스 생성시점
0
722
1
$pull 문법에 대한 질문
0
368
1
comment의 id가 생성되는 시점
1
311
1
리팩토링 강의에서 라우터 리팩토링 전개연산자(...)
1
322
1
session.abortTransaction()에 대한 실제 예시 문의
0
297
1
섹션9 Computed Fields 강의에서, 다음 강의 가기 전 빠진부분
-1
414
1
faker 패키지 취약성 이슈
1
497
1
라우터 리팩토링
0
349
1
섹션4 진행중, mongoose 질문
0
317
1





