【发布时间】:2012-08-23 18:21:05
【问题描述】:
我正在尝试使用 Mongoose 模拟将全文搜索分为两个字段。我大部分时间都在测试几种查询类型,但总是失败。 MongoDB shell 查询是这个:
db.feeds.item.find({lang:"en", $or:[{title: /searchexpression/}, {body: /searchexpression/}] })
在此示例中,我只想返回与 title 或 body 字段或两个字段中的搜索表达式(包括正则表达式)匹配的英文文档。此查询有效,但正如我所说,当尝试使用 Mongoose 调整它时,问题就开始了,:-(
我使用的一些表达方式,但不起作用:
exports.fullTextSearch = function(lang, text, callback) {
MyModel.find({lang:lang, $or: [{title:/text/},{body:/text/}]}).exec(callback);
MyModel.find({lang:lang, $or: [{title: new RegExp('\/'+text+'\/')}, {body:new RegExp('\/'+text+'\/')}]}).exec(callback);
MyModel.find({lang:lang}).or({title:/text/},{body:/text/}).exec(callback);
MyModel.find({lang:lang}).or({title:new RegExp('\/'+text+'\/')},{body:new RegExp('\/'+text+'\/')}).exec(callback);
}
非常感谢!
路易斯·卡帕。
【问题讨论】:
标签: javascript node.js mongodb mongoose mongodb-query