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 |