본문 바로가기

Computer Science/MongoDB

Mongoose regex 사용하기

Mongoose regex 사용하기 

- MongoDB에서 like 기능 구현하기 




RDBMS의 like query와 같은 기능을 구현하기 위해서 정규식을 사용해야 합니다. 



우선 


Number collection에 


name : 1

name : 11

name : 111 

name : 2 

name : 222 


라는 데이터가 있다고 가정합니다. 





여기에서 1이 들어있는 document를 찾기 위해서는 기본적으로 


Number.find({name : /1/ }, function(err, nums){

// logic

})


과 같이 생각할 수 있습니다. 



정규식을 고정적으로 사용할 경우 문제가 없지만, parameter를 통해서 요청에 따라 동적으로 만들어 질 경우에는 다음과 같이 진행하겠죠.



Bad) 


const query = '/'+req.params.num_name+'/';

Number.find({name : query }, function(err, nums){

// logic

})


위와 같이 하면 될것처럼 보이지만 정작 검색이 되지 않습니다. 


대신에, RegExp생성자를 이용해서 정규식표현을 만들어야 합니다. 



Good)


const query = new RegExp(req.params.num_name);


Number.find({name : query }, function(err, nums){

// logic

})



이와같이 RegExp를 통해 정규식을 만들어야 문제없이 작동합니다. 


'Computer Science > MongoDB' 카테고리의 다른 글

MongoDB 3.0 Sharding  (0) 2015.02.19
MongoDB 3.0 replication  (0) 2015.02.19
MongoDB 3.0 release  (0) 2015.02.11
MongoDB java driver  (0) 2015.02.08