【发布时间】:2015-09-05 06:10:08
【问题描述】:
我正在尝试在我的 mongoDB 数据库中进行关键字搜索。在 mongoDB 控制台中:
db.logs.find({$text: {$search: 'key1'}})
给出正确的结果。但是当我在我的 nodejs 控制器上使用 mongoose-text-search 时,我得到了一个错误。这是架构的定义:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var textSearch = require('mongoose-text-search');
var Log = new Schema({
keywords: [String],
description: String,
videoId: String,
logId: String,
date: Date,
robot: String
});
Log.plugin(textSearch);
Log.index({ keywords: 'text' });
module.exports = mongoose.model('log', Log);
在控制器中,在某些时候我会这样做:
Log.textSearch('key1', function(err,output) {
if (err){
res.send(500,err);
} else {
console.log(output);
}
});
响应是:
{"name":"MongoError","message":"no such command: text","ok":0,"errmsg":"no such command: text","code":59,"bad cmd":{"text":"logs","search":"key1"}}
现在,仅凭该消息就会使您认为文本搜索不起作用,但正如我之前所展示的那样。我正在运行 MongoDB shell 版本 3.0.2,因此默认情况下启用文本搜索。
【问题讨论】:
-
该插件是使用文本搜索的旧“db 命令形式”创建的,然后在 2.6 中集成到 MongoDB 的正常查询中。我相信该命令在 MongoDB 3.0.x 系列中已弃用。
-
这很有意义......所以如果我使用猫鼬,我应该进行正常查询吗?我到处都能找到链接和推荐使用该插件的人。
-
建议使用普通查询表单,如果不仅因为它似乎是与服务器上支持的方法保持同步的方法。
标签: node.js mongodb mongoose-plugins