Bon Voyage

Node.js MongoDB 드라이버 : collection.find() option 사용법 본문

개념정리/데이터베이스

Node.js MongoDB 드라이버 : collection.find() option 사용법

nangkyeong 2019. 7. 18. 20:37

 

mongoDB에 find 쿼리를 수행하던 중 projection이 적용되지 않는 문제가 발생했다.

collection.find({id: id},{followmap:1}).toArray(function(err, followmaps) {
...
});

id 값을 받아서, 해당 document의 내용 중 'followmap'이라는 필드의 값만 불러와야 하는데,
자꾸 전체 필드값이 리턴되는 것이 문제였다.

MongoDB의 shell 쿼리에서는 맞는 문법이지만,
node.js 드라이버에서는 그게 적용되지 않는 것 같았다.

API docs를 찾아보니 안 되는 이유가 있었다.
(참고: https://mongodb.github.io/node-mongodb-native/3.2/api/Collection.html#find )

 

collection.find()의 내용을 보자.

find(query, options)

MongoDB에서 받은 결과물을 iterate할 수 있는 커서를 생성하는 메소드다.
앞에는 쿼리를 그대로 주고, 뒤에 줘야 하는 option이 문제인데!

option에 굉장히 많은 요소들이 있다. 그중 내가 원하는 기능은 projection이다.
projection 쿼리에서 리턴할 필드를 정해주는 옵션이다. 포함 혹은 배제를 1, -1로 주면 된다.
이 옵션을 그냥 주면 안되고, `{projection : {리턴할 필드 : 1}}` 이렇게 줘야 했다.

collection.find({id: id}, {projection:{ followmap: 1}}).toArray(function(err, followmaps) {
...
});

이렇게 하니 원하는 대로 결과가 나왔다.

 

 

Comments