2011-03-17 4 views
7

나는 mongodb에서 일하고 있습니다. 어느 내가 같은 쿼리를 사용하고 싶습니다. 내 컬렉션 구조는 다음과 같습니다.이 mongoDB의 질문을 좋아합니다

{ "name" : "xy" , "age" : 34 , "location" : "sss"} 

{ "name" : "xyx" , "age" : 45 , "location" : "sshs"} 

{ "name" : "x" , "age" : 33 , "location" : "shhss"} 

{ "name" : "pq" , "age" : 23 , "location" : "hhh"} 

{ "name" : "pqr" , "age" : 12 , "location" : "sss"} 

"name": "x"와 (과) 일치하는 레코드를 찾고 싶습니다.

그래서 쿼리는 xy, xyz, x와 일치하는 세 레코드를 모두 반환합니다.

mongo에서 가능합니까?

누군가가 plz 답장을 알고 있다면.

감사

답변

8

당신은이 작업을 수행하는 정규 표현식을 사용할 수는 :

db.customers.find({ name : /^x/i }); 

당신은 아마 이름 필드에 어떤 인덱스를 갖고 싶어합니다.

자세한 내용은 MongoDB Documetation 사이트를 참조하십시오.

+1

대문자와 무관 한 정규식 정규식 – pingw33n

+0

에서 pingw33n의 인덱스가 작동하지 않습니다. 한 가지 방법은 컬렉션의 다른 필드를 추가하여 이름의 소문자 값을 저장하고 인덱스를 지정하고 입력을 다운 케 이스로 쿼리합니다. – blu

+0

@ pingw33n 지적 해 주셔서 고맙습니다. 당신이 "Xx"와 "xX"중 하나의 값을 가지고 있고 둘 다 "xx"로 정규화되어있는 경우 대소 문자 구분이 정말로 필요한 경우가 아니라면이 경우에 사용하는 접근법이 잘 작동하는 것 같습니다. –