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); });