Projection cannot have a mix of inclusion and exclusion 몽고디비 projection error

개발 끄적끄적 .. ✍️·2021년 12월 20일
0
post-thumbnail

몽고디비 도큐먼트를 조회할 때 사용하는 find() 메소드의 두 번째 파라미터로 들어가는 것이 바로 projection이다.
쿼리에 해당하는 도큐먼트들을 조회한 후 projection을 통해 필요한 필드만을 return 할 수 있다.
projection을 사용하면 무겁거나, 방대한 도큐먼트들에 대한 효율적인 조회가 가능하다.

그러던 중 몽고디비에서 find() 메소드를 통해 디비에서 데이터를 조회하는데 아래와 같은 에러가 발생했다.

나의 쿼리는 다음과 같다.

query = {}
projection = {
  	    '_id': False,
        'createdAt': False,
        'updatedAt': False
        'hostName': True,
        'status': True,
        'os': True,
        'brand': True
	}
machineDocs = collection.find(query, projection)

하지만 위와 같은 에러가 발생했다.

Projection cannot have a mix of inclusion and exclusion., full error: {'ok': 0.0, 'errmsg': 'Projection cannot have a mix of inclusion and exclusion.', 'code': 2, 'codeName': 'BadValue'}

해당 에러와 관련해서 MongoDB Dev Community에서 찾아보니 projection은 포함과 제외를 동시에 혼영할 수 없다는 사실을 발견했다. 생각해보니 너무나도 당연한 말이었는데 ..

It does not allow the mixing of inclusions and exclusion when returning a result.

단 혼용할 수 있는 필드가 있는데 바로 _id 이다. _id 의 경우 다른 필드 projection 들과 함께 사용할 수 있다고 한다.

_id is the only field which you need to explicitly exclude in the projection

자료참조: https://www.mongodb.com/community/forums/t/projection-does-not-allow-exclusion-inclusion-together/31756/2

0개의 댓글