2011-07-17 4 views
1

나는 요소를 찾는 방법이"LIKE"와 "NOT LIKE"로 MongoDB를 쿼리하는 방법은 무엇입니까?

array(
    'ts' : 123456789, 
    'nm' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' 
) 
... 
array(
    'ts' : 122345678, 
    'nm' : 'Nulla lorem purus, pretium porttitor ultricies sit amet, rutrum sollicitudin risus.' 
) 

같은 배열이 누구에 포함 된 'AMET'이 아니라 '나노'에 ' ipsum의 '을 포함했습니다? 'amet'및 'ipsum'과 같은 요소를 찾는 방법은 무엇입니까?

+2

귀하의 질문에 "해결"쓰지 마십시오. 답변을 게시하십시오. –

+0

아래에 게시되었습니다. – dobeerman

+0

감사합니다. 그리고 그 사람이 당신과 함께 간다면, 보통 자기 스스로 그것을 받아 들일 것입니다. –

답변

2

MY 솔루션

array(
    'nm' => array(
    '$all' => array(new MongoRegex('/amet/'), ...), 
    '$nin' => array(new MongoRegex('/ipsum/'), ...) 
) 
) 
2

몽고가 LIKE에가 가장 가까운 것은 정규 표현식에 있습니다 :

db.my_collection.find({nm: /amet/}) 

하지만 난 당신이 당신이 캡처 모두 포함하지-포함하는 단일 정규식을 쓸 수없는 한 요청 일을 할 수 있다고 생각하지 않습니다 당신의 질문의 일부.

말하자면, LIKE과 마찬가지로 Mongo의 정규 표현식 쿼리는 실행되지 않습니다. 당신은 전체 텍스트 검색을해야 할 경우 SOLR 같은, 또는 내장 전체 텍스트 인덱스가있는 데이터베이스에 보일 것입니다.

관련 문제