Utilisez la la notation entre parenthèses pour créer l'objet de requête dynamiquement, vous pouvez donc restructurer votre fonction comme suit :
function _partialSearch (Model, searchText, key, res) {
var search = new RegExp(searchText, "i"),
query = {};
query[key] = { $regex : search };
Model.find(query)
.exec(function (err, docs) {
if(err) log(err);
else {
res.json(docs);
}
});
}