mognoose用多列正则expression式search

我有一个模式定义为mongoose模型 –

var campusNotesSchema = mongoose.Schema({ noteId:{type:String, unique:true, default: uuid.v4()}, title: {type:String, required:'{PATH} is required!'}, uploader:{type:String,required:'{PATH} is required!'}, department:{type:String}, college:{type:String}, author:{type:String,required:'{PATH} is required!'}, actualFileName: [String], storedFileName: [String], subject: {type:String}, description: {type:String}, details: {type:String}, date: {type:Date, default: Date}, tags: [String] }); 

和模型定义为 –

 var Campusnotes = mongoose.model('Campusnotes', campusNotesSchema); 

现在我想在标题,标签,描述字段中search请求对象的参数

 if(req.query.searchText){ Campusnotes.find({title:new RegExp(searchText,'i'),description:new RegExp(searchText,'i')}).exec(function(err, collection) { res.send(collection); }) } 

现在我怎样才能确保在任何标题或描述中find的任何结果都包含在内,而不仅仅是两者中的结果。 另外,我如何在标签数组中search匹配的string

您可以使用$或者mongoose运算符来返回任何一个匹配的结果
$或 http://docs.mongodb.org/manual/reference/operator/query/or/

 Campusnotes.find({'$or':[{title:new RegExp(searchText,'i')},{description:new RegExp(searchText,'i')}]}).exec(function(err, collection) { res.send(collection); }) 

要在数组中search匹配的string,您需要使用mongo的$ in操作符:

$ in : http : //docs.mongodb.org/manual/reference/operator/query/in/

使用这个查询,$ option = i,当你将数据插入到TAG数组中时,首先使用小写字母和小写字母search就可以轻松地跳过下面的大写字母。

 Campusnotes.find({title:{'$regex':searchText,'$option':'i'},description:{'$regex':searchText,'$option':'i'},tags:searchText}, function(err, collection){ res.send(collection); });