[MONGODB] 정수 값에 MongoDB를 정규식 검색
MONGODB정수 값에 MongoDB를 정규식 검색
나는 MongoDB의 정수 값을 검색 정규식 싶습니다. 이것이 가능한가?
나는 다양한 분야에 와일드 카드 *를 할 수있는 CRUD 유형 인터페이스를 짓고 있어요. 나는 정수 몇 가지 필드에 대한 일관된 UI를 유지하기 위해 노력하고있어.
치다:
> db.seDemo.insert({ "example" : 1234 });
> db.seDemo.find({ "example" : 1234 });
{ "_id" : ObjectId("4bfc2bfea2004adae015220a"), "example" : 1234 }
> db.seDemo.find({ "example" : /^123.*/ });
>
당신이 볼 수 있듯이, 나는 개체를 삽입하고 난 값을 찾을 수 있어요. 나는 간단한 정규식을하려고하면, 나는 실제로 개체를 찾을 수 없습니다.
감사!
해결법
-
==============================
1.당신은 숫자에 패턴 일치를 수행하고자하는 경우, 몽고에서 그것을 할 수있는 방법은 $ 표현을 사용하고 패턴 일치를 전달합니다.
당신은 숫자에 패턴 일치를 수행하고자하는 경우, 몽고에서 그것을 할 수있는 방법은 $ 표현을 사용하고 패턴 일치를 전달합니다.
> db.test.find({ $where: "/^123.*/.test(this.example)" }) { "_id" : ObjectId("4bfc3187fec861325f34b132"), "example" : 1234 }
-
==============================
2.나는 그것이 인덱스를 사용하지 않는 방식으로 인해 쿼리 연산자는 쿼리 식을 평가합니다 $를 사용의 큰 팬 쿼리가 사용하는 사용자 입력 데이터의 경우 보안 위험하지 않다.
나는 그것이 인덱스를 사용하지 않는 방식으로 인해 쿼리 연산자는 쿼리 식을 평가합니다 $를 사용의 큰 팬 쿼리가 사용하는 사용자 입력 데이터의 경우 보안 위험하지 않다.
이 작업을 수행하여 MongoDB에서 사용할 수있는 $ regexFindAll 4.1.9+하고 $ EXPR | $ regexFind | MongoDB를 4.2에서 시작 당신은 $ REGEXMATCH를 사용할 수 있습니다.
let regex = /123/;
MongoDB를 4.0에서 당신은 캐릭터 라인 화 정수에 $ 변환 연산자의 래퍼 인 $의를 toString 연산자를 사용할 수 있습니다.
db.seDemo.aggregate([ { "$redact": { "$cond": [ { "$gt": [ { "$indexOfCP": [ { "$toString": "$example" }, "123" ] }, -1 ] }, "$$KEEP", "$$PRUNE" ] }} ])
당신이 원하는 것은 릴리스 3.4에서 시작하여 특정 문자열을 포함하는 모든 문서를 검색 할 경우, 당신은 $ 조건부 논리 처리를 허용하는 $의 편집하다 연산자를 사용할 수 있습니다. $ indexOfCP을.
db.seDemo.aggregate([ { "$redact": { "$cond": [ { "$gt": [ { "$indexOfCP": [ { "$toLower": "$example" }, "123" ] }, -1 ] }, "$$KEEP", "$$PRUNE" ] }} ])
이는 생산 :
{ "_id" : ObjectId("579c668c1c52188b56a235b7"), "example" : 1234 } { "_id" : ObjectId("579c66971c52188b56a235b9"), "example" : 12334 }
MongoDB를 3.4 이전에, 당신은 당신의 문서를 프로젝트와 숫자의 문자열 값 또 다른 계산 필드를 추가 $해야합니다.
$ tolower를 그의 형제 $의 TOUPPER 사업자는 각각 문자열을 소문자로 변환하고 대문자하지만 그들은 문자열로 정수를 변환하는 데 사용할 수 있다는 것입니다 조금 알 수없는 기능이 있습니다.
모든 $ 일치 연산자가 반환 $ 정규식 연산자를 사용하여 패턴과 일치하는 문서.
db.seDemo.aggregate( [ { "$project": { "stringifyExample": { "$toLower": "$example" }, "example": 1 }}, { "$match": { "stringifyExample": /^123.*/ } } ] )
이는 수율 :
{ "_id" : ObjectId("579c668c1c52188b56a235b7"), "example" : 1234, "stringifyExample" : "1234" } { "_id" : ObjectId("579c66971c52188b56a235b9"), "example" : 12334, "stringifyExample" : "12334" }
이제, 당신이 원하는 경우 특정 문자열 달러 (A $) 조건부 논리 처리를 허용하는 $의 편집하다 연산자를 사용하여이 (이 글을 쓰는 현재) MongoDB의의 곧 출시에를 할 수있는 쉽고 더 좋은 방법을 포함하는 모든 문서를 검색하다 . $ indexOfCP.
db.seDemo.aggregate([ { "$redact": { "$cond": [ { "$gt": [ { "$indexOfCP": [ { "$toLower": "$example" }, "123" ] }, -1 ] }, "$$KEEP", "$$PRUNE" ] }} ])
from https://stackoverflow.com/questions/2908100/mongodb-regex-search-on-integer-value by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게하여 MongoDB에서 참조 된 개체는 쿼리합니까? (0) | 2019.12.01 |
---|---|
[MONGODB] MongoDB의 날짜를 문자열로 변환 (0) | 2019.12.01 |
[MONGODB] $ 조회 후 집계 필터 (0) | 2019.12.01 |
[MONGODB] MongoDB를 업데이트 깊이 하위 문서를 중첩 (0) | 2019.12.01 |
[MONGODB] Mongod은 / 데이터 / DB 폴더가 더 있다는 것을 불평하지 (0) | 2019.12.01 |