1
我有一種情況,我想根據某些單詞的出現次數從mongodb中定義我自己的函數對數據進行排序。在貓鼬上定義自定義排序功能
例如,我有這樣的模式:
const RecipeSchema = mongoose.Schema({
Title: { type: String },
Content: { type: String },
PublishDate: { type: Date },
});
這些值:
Title: 'Chocolate Cake',
Title: 'Naked Cake',
Title: 'Fruit Cake',
Title: 'Beef'
所以,當我查詢 「裸蛋糕」,我想這樣的
結果Title: 'Naked Cake', // 1, because have the two words
Title: 'Chocolate Cake', // 2 because have just one word
Title: 'Fruit Cake', // 3 because have just one word
// beef has no match word
今天我有這個查詢功能:
Recipe
.find()
.where({ Title: GetQueryExpression(value)})
.sort({ PublishDate: -1 })
.exec(callback);
而且GetQueryExpression功能是:
function GetQueryExpression(value){
var terms = value.split(' ');
var regexString = "";
for (var i = 0; i < terms.length; i++)
regexString += terms[i] + '|';
regexString = regexString.substr(0, regexString.length - 2);
var result = new RegExp(regexString, 'ig');
return result;
}
也有人有一些想法如何實現這一排序,couting的話!?發生