2011-11-29 46 views
0

我在節點/ mongoose項目中擁有以下js位。我正在處理自動完成表單。它適用於正常的「查找」,但我想做一個「獨特」的查找。貓鼬的「獨特」功能是否支持查詢中的正則表達式?

所以這裏是我到目前爲止的地方。我相信問題是查詢形成的方式。有人可以幫助我在不同的行中使用我的語法嗎?或者,只是貓鼬的「獨特」不支持可選查詢中的正則表達式?

var text.term = 'johnny'; 
var regex = new RegExp("^"+text.term); 
// execute the search 
Performance.collection.distinct({lc_actor: regex}, function(err, docs) { 
    var names = []; 
    for(var nam in docs) { 
     // push the lc_actor to the array 
    names.push(docs[nam].lc_actor); 
    } 
    // send back via callback function 
    callback(null, names); 
}); 

這裏就是我的超詳細(-vvvvvvvvvvvvv)貓鼬控制檯顯示:

Tue Nov 29 13:34:30 [conn1] runQuery called mydb.$cmd { distinct: "performances", query: {}, key: { lc_actor: /^johnny/ } } 
Tue Nov 29 13:34:30 [conn1] run command mydb.$cmd { distinct: "performances", query: {}, key: { lc_actor: /^johnny/ } } 
Tue Nov 29 13:34:30 [conn1] command mydb.$cmd command: { distinct: "performances", query: {}, key: { lc_actor: /^johnny/ } } ntoreturn:1 reslen:140 526ms 

任何想法?

回答

2

回答我自己的問題。我確實在貓鼬的獨特方法中有語法錯誤。它接受3個PARAMS,我只有2.正則表達式(或任何條件)正確的語法是:

Performance.collection.distinct('lc_actor', {lc_actor: regex}, function(err, docs) { 

從貓鼬文檔爲Model.distinct():

Model.distinct(field, conditions, callback); 

http://mongoosejs.com/docs/finding-documents.html