[MONGODB] 몽고에서 $ 정규식 및 $ 또는 연산자를 결합
MONGODB몽고에서 $ 정규식 및 $ 또는 연산자를 결합
나는 $ 또는 및 $ 정규식 연산자 같은 시간을 사용하고 싶습니다.
$ 정규식을 사용하면 잘 작동합니다 :
> db.users.find({name: {$regex: "^Da"}})
{ "_id" : ObjectId("53e33682b09f1ca437078b1d"), "name" : "Dan" }
{ "_id" : ObjectId("53e33682b09f1ca437078b1e"), "name" : "Dave" }
$를 도입하거나 할 때 응답이 변경됩니다. 나는 동일한 응답을 기대 :
> db.users.find({name: {$regex: {$or: ["^Da"]}}})
{ "_id" : ObjectId("53e33682b09f1ca437078b1a"), "name" : "Alice" }
{ "_id" : ObjectId("53e33682b09f1ca437078b1b"), "name" : "Bob" }
{ "_id" : ObjectId("53e33682b09f1ca437078b1c"), "name" : "Carol" }
{ "_id" : ObjectId("53e33682b09f1ca437078b1d"), "name" : "Dan" }
{ "_id" : ObjectId("53e33682b09f1ca437078b1e"), "name" : "Dave" }
나는 또한 사업자의 순서를 변경하려고 :
> db.users.find({name: {$or: [{$regex: "^Da"}, {$regex: "^Ali"}]}})
error: { "$err" : "invalid operator: $or", "code" : 10068 }
그러나, 다음 쿼리는 잘 작동 것 같다,하지만 (이름이 반복) 약간의 비트 길이이다 :
> db.users.find({$or: [{name: {$regex: "^Da"}}, {name: {$regex: "^Ali"}}]})
{ "_id" : ObjectId("53e33682b09f1ca437078b1a"), "name" : "Alice" }
{ "_id" : ObjectId("53e33682b09f1ca437078b1d"), "name" : "Dan" }
{ "_id" : ObjectId("53e33682b09f1ca437078b1e"), "name" : "Dave" }
$ 정규식 및 $ 또는 같은 쿼리를 사용하기 위해 짧은 방법이 있습니까?
목표는 $ 정규식 연산자가 아닌 /.../ (실제 정규 표현식)를 사용하는 것입니다.
해결법
-
==============================
1.올바른 형태가 될 것이다 있도록 $ 또는 운영자는 모든 조건을 기대 :
올바른 형태가 될 것이다 있도록 $ 또는 운영자는 모든 조건을 기대 :
db.users.find({ "$or": [ { "name": { "$regex": "^Da"} }, { "name": { "$regex": "^Ali" }} ]})
또는 과정에서 $를 사용 :
db.users.find({ "name": { "$in": [/^Da/,/^Ali/] } })
그러나 당신이 할 수 있도록 정규식입니다 :
db.users.find({ "name": { "$regex": "^Da|^Ali" } })
-
==============================
2.그것은 오랜만입니다. 그러나, 나는 아래의 쿼리와 같은 정규식 쿼리의 경우를 구분을 추가합니다. 이름은 대문자로 데이터베이스에 저장된 경우, 그래서 그것은 중요하지 않습니다 :
그것은 오랜만입니다. 그러나, 나는 아래의 쿼리와 같은 정규식 쿼리의 경우를 구분을 추가합니다. 이름은 대문자로 데이터베이스에 저장된 경우, 그래서 그것은 중요하지 않습니다 :
db.users.find({ "name": { "$regex": "^Da|^Ali", "$options": "i" } })
희망이 도움이
from https://stackoverflow.com/questions/25177645/combining-regex-and-or-operators-in-mongo by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게하여 MongoDB에서 배열에서 항목의 인스턴스를 당겨? (0) | 2019.12.15 |
---|---|
[MONGODB] 어떻게 포함 된 배열의 갱신 후 새 값을 다시 얻으려면? (0) | 2019.12.15 |
[MONGODB] MongoDB를 업데이트 깊은 배열 (0) | 2019.12.15 |
[MONGODB] 어떻게 몽고 날짜와 문서를 삽입? (0) | 2019.12.15 |
[MONGODB] 몽고는 : 어떻게 외부 중량 정렬하려면 (0) | 2019.12.15 |