programing

여러 필드에 대한 Node.js 및 Mongoose 정규식 쿼리

instargram 2023. 5. 12. 20:14
반응형

여러 필드에 대한 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

반응형