2013-07-04 1 views
0

MongoDB에 "단어"모음이 있습니다. 컬렉션을 검색하고 싶을 때 "단어"로 시작하는 단어를 나열한 다음 내가 물어 본 "단어"를 포함합니다. 동일한 배열에서 나는이 결과를 얻는다; "simarte", "Cumartesti", "Mart", "marti", "martilar". 포함 된 단어로 검색하면 단어 (마트)가 포함 된 다른 단어가 나타납니다.MongoDB 내의 하나의 쿼리에서 여러 기준을 사용할 수 있습니까?

"단어"를 포함하는 단어보다 먼저 "단어"로 시작하는 단어를 주문하고 싶습니다. 하나의 쿼리에서이를 수행 할 수 있습니까? 나는 db에 두 번째 요청을하고 싶지 않습니다. 내가 처음 인 경우는 일종의 w 필드에 의해, MongoDB를 두 번째를 정렬 할 첫 글자를 고려 (것 경우는 동일 이후는 등, 수 없습니다 생각

var word = "mart"; 
    db.words.find({"w" : {$regex : ".*" + word + ".*"}}, function(err, words) { 
     if(err || !words) console.log("No data found"); 
     else{ 
     res.render('index', { title: 'Words', word_data: words, word : word }); 
    } 
    }); 

답변

0

: 여기

내 코드 샘플입니다).

어쩌면 텍스트 검색이 도움이 될 수 있습니다. 결과에 score 필드가 포함되어 있으며이를 기준으로 정렬 할 수 있습니다. @WiredPrairie가 지적했듯이 텍스트 검색은 제작 준비가되지 않았으므로 조심하십시오. 또 다른 옵션은 결과를 프로그래밍 방식으로 정렬하는 것입니다.

http://docs.mongodb.org/manual/core/text-search/

Sorting with MongoDB full text search

+1

텍스트 검색 생산 준비되지 않은, 그래서 나는 아직 그것을 권하고 싶지 않다 :

여기 당신은 그것에 대해 더 많은 정보를 찾을 수 있습니다. – WiredPrairie

관련 문제