SQL 쿼리로 무언가를 쿼리하고 싶습니다 like
.
SELECT * FROM users WHERE name LIKE '%m%'
MongoDB에서 어떻게 동일한 결과를 얻습니까? 설명서like
에서 연산자를 찾을 수 없습니다 .
답변
다음과 같아야합니다.
db.users.find({"name": /.*m.*/})
또는 유사한 :
db.users.find({"name": /m/})
문자열의 시작 부분에 “m”이 고정 된 것이 아니라 “m”이 포함 된 것을 찾고 있습니다 (SQL의 ‘ %
‘연산자는 Regexp의 ‘ .*
‘ 와 동일 함 ).
참고 : mongodb는 SQL에서 “LIKE”보다 강력한 정규식을 사용합니다. 정규 표현식을 사용하면 상상할 수있는 패턴을 만들 수 있습니다.
정규 표현식에 대한 자세한 내용은이 링크를
참조하십시오 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
답변
db.users.insert({name: 'paulo'})
db.users.insert({name: 'patric'})
db.users.insert({name: 'pedro'})
db.users.find({name: /a/}) //like '%a%'
아웃 : 파울로
db.users.find({name: /^pa/}) //like 'pa%'
아웃 : 파울로
db.users.find({name: /ro$/}) //like '%ro'
아웃 : 페드로
답변
에
- 파이썬을 사용하는 PyMongo
- Node.js를 사용하는 몽구스
- Java를 사용하는 Jongo
- Go를 사용하여 mgo
넌 할 수있어:
db.users.find({'name': {'$regex': 'sometext'}})
답변
PHP에서는 다음 코드를 사용할 수 있습니다.
$collection->find(array('name'=> array('$regex' => 'm'));
답변
몽고에서는 정규 표현식을 사용합니다.
예 : db.users.find({"name": /^m/})
답변
이미 많은 답변이 있습니다. 정규식으로 문자열 검색을위한 다양한 유형의 요구 사항과 솔루션을 제공하고 있습니다.
단어를 포함하는 정규 표현식으로 할 수 있습니다. $options => i
대소 문자를 구분하지 않는 검색에도 사용할 수 있습니다
포함 string
db.collection.find({name:{'$regex' : 'string', '$options' : 'i'}})
string
정규식 만 포함하지 않습니다
db.collection.find({name:{'$regex' : '^((?!string).)*$', '$options' : 'i'}})
대소 문자를 구분하지 않음 string
db.collection.find({name:{'$regex' : '^string$', '$options' : 'i'}})
로 시작 string
db.collection.find({name:{'$regex' : '^string', '$options' : 'i'}})
끝나다 string
db.collection.find({name:{'$regex' : 'string$', '$options' : 'i'}})
이것을 책갈피로 유지 하고 필요한 다른 변경 사항에 대한 참조로 유지하십시오 .
답변
두 가지 선택이 있습니다 :
db.users.find({"name": /string/})
또는
db.users.find({"name": {"$regex": "string", "$options": "i"}})
두 번째 옵션에서는 대소 문자를 구분하지 않고 찾을 수있는 옵션에 “i”와 같은 추가 옵션이 있습니다. “string”에 대해서는 “.string . “(% string %) 또는 “string. *”(string %) 및 “. * string) (% string)과 같이 사용할 수 있습니다. 정규식을 사용할 수 있습니다. 원하는대로.
즐겨!