不能在字符串中使用$ text

时间:2014-05-05 13:34:47

标签: node.js mongodb mongoose node-mongodb-native

此代码转储到异常

self.staticVars.Model
        .find({shortAddress: {$text : { $search: data.text }}, _town: data._town},{limit: 10})
        .populate('_street _district')
        .sort({house: 1})
        .exec(callback);

异常

Can't use $text with String

模型

shortAddress: {
    type: String
},

索引

collection.ensureIndex({fullAddress: 'text', shortAddress: 'text'}, { default_language: "russian" },function(){});

1 个答案:

答案 0 :(得分:4)

查看docs您无法为文本搜索指定字段,它将搜索所有索引字段,因此在您的情况下,它将搜索fullAddress和shortAddress返回在这两个字段中匹配的文档。

您的查询必须是:

self.staticVars.Model
    .find({$text : { $search: data.text }, _town: data._town},{limit: 10})
    .populate('_street _district')
    .sort({house: 1})
    .exec(callback);

现在应该返回正确的数据。