• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

비교문법 실습 1번

22.02.10 14:50 작성 조회수 122

0

비교문법 실습 1번에서

 

다음과 같이 실행하면

db.employees.find({ age: {$gt: 20}}, { _id:0, user_id:1, age:0, status:0 })

 

아래와 같은 에러가 발생합니다. 왜그럴까요?

Error: error: {

"ok" : 0,

"errmsg" : "Cannot do exclusion on field age in inclusion projection",

"code" : 31254,

"codeName" : "Location31254"

}

답변 1

답변을 작성해보세요.

0

우선 항상 무언가 문제가 있을때에는, 제가 드린 자료를 새로 다운받으셔서 그대로 테스트해보시고, 그 후에, 아주 작게 수정해보시면 좋을 것 같아요. 그 후에 해당 에러 메세지로도 검색해보시고요.

말씀하신 부분은 제 생각에는 앞에는 age > 20 이런 조건이 있고, 뒤에는 age = 0 이라고 써서, 조건 자체에 문제가 있어서 그런 것 도 같습니다. 그런데, 이 부분보다, 스스로 문제가 생겼을 때, 문제가 무엇인지를 찾아보고, 궁리해보는 습관을 들이시지 않으면, 해당 기술을 활용할 수가 없거든요. 이 부분을 계속 연습해보시면 훨씬 도움이 되실꺼예요.

강의 내용에 따르면 {age: {$gt: 20}}은 검색 조건이고, { _id:0, user_id:1, age:0, status:0 } 부분은 출력여부 플래그인듯한데, 조건과 출력플래그가 상관관계가 있는건가요?

그리고 아래와 같이 age : 0을 빼고 실행해도 동일한 에러가 납니다.

db.employees.find({ age: {$gt: 20}}, { _id:0, user_id:1, status:0 })

 

찾아보니 projection 설정시 '_id'를 제외하고는 'include'와 'exclude'는 혼용될 수 없다고 합니다.

https://www.mongodb.com/community/forums/t/projection-does-not-allow-exclusion-inclusion-together/31756