mongoose的“distinct”函数是否支持查询中的正则表达式?

时间:2011-11-29 18:43:22

标签: mongodb node.js distinct mongoose

我在节点/ mongoose项目中有以下一些js。我正在处理自动填充表单。通过常规的“查找”它可以正常工作,但我想做一个“不同的”查找。

所以这就是我到目前为止的地方。我认为问题在于查询的形成方式。有人可以帮助我在不同的行中使用我的语法吗?或者只是mongoose的“distinct”在可选查询中不支持正则表达式?

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

回答我自己的问题。我确实在mongoose的独特方法中有语法错误。它接受3个参数,我只有2.使用正则表达式(或任何条件)的正确语法是:

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

来自Model.distinct()的Mongoose docs:

Model.distinct(field, conditions, callback);

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