반응형
여러 필드에 대한 Node.js 및 Mongoose 정규식 쿼리
두 가지 모두 동일한 정규식을 사용하여 여러 필드를 쿼리합니다.이 쿼리에서 단일 텍스트 입력을 수락하고 firstName 및 lastName 필드에서 결과를 모두 확인합니다.mongoose 문서의 regex 함수를 사용하여 단일 필드를 올바르게 쿼리할 수 있지만 'or' 절에 대한 구문이 문제를 일으키고 있습니다.
var re = new RegExp(req.params.search, 'i');
app.User.find().or([{ 'firstName': { $regex: re }}, { 'lastName': { $regex: re }}]).sort('title', 1).exec(function(err, users) {
res.json(JSON.stringify(users));
});
(node.js 0.6.12에서 mongoose 2.7.1을 실행하고 있습니다.)
위의 코드는 여러 필드에 대한 쿼리에 적합합니다.제가 나쁜 데이터를 가지고 있었습니다.
제 솔루션은 여러 필드를 연결하고 결합된 값을 정규식과 일치시킬 수 있는 $function을 사용하는 것입니다.
const { search } = req.params;
var regex = new RegExp(`.*${search}.*`, 'i');
app.User.find({
$expr: {
$function: {
body: `function(firstName, lastName) { return (firstName+' '+lastName).match(${regex}) }`,
args: ['$firstName', '$lastName'],
lang: "js"
}
}
})
.exec((err, users) => {
res.json(JSON.stringify(users));
});
언급URL : https://stackoverflow.com/questions/11725708/node-js-and-mongoose-regex-query-on-multiple-fields
반응형
'programing' 카테고리의 다른 글
MongoDB를 사용하여 최대 절전 모드로 전환 (0) | 2023.05.17 |
---|---|
ExecuteReader를 사용하려면 열려 있고 사용 가능한 연결이 필요합니다.연결의 현재 상태는 연결 중입니다. (0) | 2023.05.17 |
GitHub에서 분기된 repo 삭제 (0) | 2023.05.12 |
파이썬에서 16진수 문자열을 바이트로 변환하는 방법은 무엇입니까? (0) | 2023.05.12 |
Xcode에서 보관 버튼이 회색으로 표시됨 (0) | 2023.05.12 |