0
在MongoDB中找到的正則表達式更像一個篩選器而不是搜索。無論如何根據正則表達式排序結果?排序正則表達式找到mongodb mongoose
P.S:我知道MongoDB具有全文搜索功能,但我正在尋找一種解決方案,即使在輸入部分單詞時也能提供結果。
此外,我知道像MongoDB與Elastic Search存在的解決方案存在,但我正在尋找一個簡單的解決方案,不需要託管另一項服務。
此外,性能不是問題。
在MongoDB中找到的正則表達式更像一個篩選器而不是搜索。無論如何根據正則表達式排序結果?排序正則表達式找到mongodb mongoose
P.S:我知道MongoDB具有全文搜索功能,但我正在尋找一種解決方案,即使在輸入部分單詞時也能提供結果。
此外,我知道像MongoDB與Elastic Search存在的解決方案存在,但我正在尋找一個簡單的解決方案,不需要託管另一項服務。
此外,性能不是問題。
$正則表達式是隻使用字段類型String.It不與其他類型的
工作讓考慮小例子與正則表達式操作播放
//我們採取用戶模型如下
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
Name:String,
Age:Number,
Sex:Boolean,
EmailID:String,
PhoneNumber:String,
Description:String,
created_at:Date,
updated_at:Date
});
module.exports = mongoose.model('UserSchema', UserSchema);
與$正則表達式運算符多的搜索和多搜索$選擇你的MongoDB的查詢就會像下面
var toSearch = req.body.searchvalue;
var query = {
$or:[
{
"Name":{
$regex:toSearch,
$options:"i" //it will match both upper case and lower case
}
},
{
"EmailID":{
$regex:toSearch,
$options:"i" //it will match both upper case and lower case
}
},
{
"PhoneNumber":{
$regex:toSearch,
$options:"i" //it will match both upper case and lower case
}
},{
"Description":{
$regex:toSearch,
$options:"i" //it will match both upper case and lower case
}
}
]
}
//Important point to remember we cannot use $regex for age,sex,created_at,updated_at because this field are not String
UserSchema.find(query).toArray(function (err,SearchData) {
if(!err){
//perform your operations
}
}) ;
這可能會幫助你,最好是在MongoDB中創建搜索引擎。它是下一個有效的彈性搜索是1號
你是什麼意思「排序基於正則表達式的結果」?更新你的問題以包含一個特定的例子將是非常有用的。 – JohnnyHK