2013-07-04 85 views
0

我在MongoDB中有一個「單詞」集合。當我想要搜索集合時,我想列出以「單詞」開頭的第一個單詞,然後包含我查詢的「單詞」。在同一個數組中,我得到了這個結果; 「simarte」,「Cumartesti」,「Mart」,「marti」,「martilar」。當我用包含進行搜索時,會帶給我其他包含「單詞」(mart)的單詞。MongoDB中的一個查詢可能存在多個條件?

我想先訂購以「單詞」開頭的單詞,而不是「包含」單詞。在一個查詢中可以這樣做嗎?我不想再向db請求。

這裏是我的代碼示例:

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

我認爲這是不可能的,因爲如果你按w場,MongoDB的會考慮的第一個字母進行排序(以及第二,如果第一個是等於等)。

也許文本搜索可以幫助你。它包含結果中的score字段,您可以按其進行排序。正如@WiredPrairie所指出的那樣,文本搜索並沒有準備好,所以要小心。 另一個選項是以編程方式排序結果。

在這裏你可以找到更多信息有關:

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

Sorting with MongoDB full text search

+1

文本搜索不是生產做好準備,所以我不會推薦它。 – WiredPrairie