[MONGODB] 나는 MongoDB에 대한 쿼리에 정규식 변수를 사용하는 방법
MONGODB나는 MongoDB에 대한 쿼리에 정규식 변수를 사용하는 방법
나는 contruct하는 정규식 표현을 기반으로 문서를 쿼리하여 MongoDB를하고 싶습니다. 에 대한 예 : 그에서 Nodejs에 대한 임의의 문자와 임의의 숫자의 조합으로 다음과 같이 나는 간단한 정규식을 구축 한
var randnum = Math.floor((Math.random() * 10) + 1);
var alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','X','Y','Z'];
var randletter = alpha[Math.floor(Math.random() * alpha.length)];
var val = randletter + randnum + '.*;
내가 좋아하는 정규식 변수에 대한 다양한 조합을 시도했다
var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
그것은 오 아무도 제대로 작동하지 않습니다. 내가 실제 정규 표현식을 쓸 때 그러나 나는 예에 대한 기록을 얻을
var stream = collection.find({"FirstName": /J.*/).stream();
어떤 도움을 이해할 수있을 것이다.
감사 가네
해결법
-
==============================
1.당신은 /.../ 구문은 리터럴에 사용 그대로 정규식 생성자를 사용하여 문자열에서 정규 표현식 객체를 생성해야합니다.
당신은 /.../ 구문은 리터럴에 사용 그대로 정규식 생성자를 사용하여 문자열에서 정규 표현식 객체를 생성해야합니다.
var stream = collection.find({"FirstName": new RegExp(val)}).stream();
-
==============================
2., 나는 나의 제목과 같은 문제가되고 검색을 많이 후, 나는 다음은이 대답을 발견
, 나는 나의 제목과 같은 문제가되고 검색을 많이 후, 나는 다음은이 대답을 발견
var search = 'Joe'; db.users.find(name: /^search/) db.users.find(name: {$regex: /^search/}); db.users.find(name: {$regex: "/^" + search + "/"});
쿼리는 위의 아무것도 반환하지 않습니다. 이 작은 문제의 해결책은 아주 간단합니다 :
db.users.find(name: new RegExp(search)) //For substring search, case sensitive. db.users.find(name: new RegExp('^' + search + '$')) //For exact search, case sensitive db.users.find(name: new RegExp(search, ‘i')) //For substring search, case insensitive db.users.find(name: new RegExp('^' +search + '$', 'i')); //For exact search, case insensitive
다른 플래그 또는 속성은 여기 참조에 기반을 추가 할 수 있습니다
-
==============================
3.또는 작업 정규식에 동적 값을 사용하려면 다음 코드를 사용하여
또는 작업 정규식에 동적 값을 사용하려면 다음 코드를 사용하여
{$match: { $or: [{ 'title': { $regex: request.query.val, $options: 'i'} }, { 'skills_required': { $regex: request.query.val, $options: 'i'} }] }},
-
==============================
4.쿼리 부분의 매개 변수로 변수의 발을 사용하려는 경우, 예를 들어 $ 정규식을 사용할 수 있습니다 :
쿼리 부분의 매개 변수로 변수의 발을 사용하려는 경우, 예를 들어 $ 정규식을 사용할 수 있습니다 :
collection.find({"FirstName": {$regex:val}})
설명서에 따라 운영자에 $에서 $ 정규식을 넣을 수 없습니다.
당신이 운영자에 $에서 정규 표현식 객체를 넣어하려는 경우, 당신은 예를 들어, 자바 스크립트 정규 표현식 객체를 사용해야합니다 :
collection.find({"FirstName": {$in: [/abc/, /123/]}})
그런데, 발에 / 발 / 상수 문자열이 아닌 변수 위에서 정의 된 바와 같다.
from https://stackoverflow.com/questions/26699885/how-can-i-use-a-regex-variable-in-a-query-for-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 계산 조건에 몽고 정렬 (0) | 2019.12.10 |
---|---|
[MONGODB] MongoDB를 단일 쿼리로 여러 카운트 (0) | 2019.12.10 |
[MONGODB] 두 점 사이의 MongoDB를 인쇄 거리 (0) | 2019.12.10 |
[MONGODB] 어떻게 유성 외부 MongoDB의 인스턴스에 연결하는? (0) | 2019.12.10 |
[MONGODB] MongoDB를 $ 또는 쿼리 (0) | 2019.12.10 |