Javascript 使用mongoose查询正则表达式的mongodb集合
我正在尝试使用Javascript 使用mongoose查询正则表达式的mongodb集合,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我正在尝试使用regex查询mongoose,我看到其他帖子也有类似的建议,但我仍然无法理解,并且还得到了新的错误,而不仅仅是返回一个空文档 我试图查询值包含而不是需要精确的结果 我的路线是这样的 router.get('/:name/:value', (req, res, next) => { const o = {}; const r = `.*${req.params.value}.*`; // the above gives me error such as CastE
regex
查询mongoose
,我看到其他帖子也有类似的建议,但我仍然无法理解,并且还得到了新的错误,而不仅仅是返回一个空文档
我试图查询
值包含
而不是需要精确的结果
我的路线是这样的
router.get('/:name/:value', (req, res, next) => {
const o = {};
const r = `.*${req.params.value}.*`;
// the above gives me error such as CastError: Cast to string failed for value "{ '$regex': '.*y.*' }" at path "username" for model "Model"
o[req.params.name] = { $regex: { $regex: r }, $options: 'i' };
Model.find(o, (err, doc) => {
if (err) return next(err);
res.send('success');
});
});
有人能帮我一下我做错了什么吗
提前感谢您的帮助。假设下面是您的模型
//Employee.js
import mongoose from 'mongoose';
const Employee = mongoose.Schema({
Name: { type: String, default: "" },
Age: { type: Number, default: 0 },
Email: { type: String, default: "" },
}, { collection: 'Employee' });
export default mongoose.model('Employee', Employee);
您的路由器必须如下所示
var Employee = require('../path/to/Employee.js');
router.get('/name/:value', (req, res, next) => {
let query = {
Name: {
$regex: req.params.value,
$options: "i"
}
};
Employee.find(query, (err, docs) => {
if (err) return next(err);
console.log("Documents-->", docs)
res.send('success');
});
});
您不需要为名称指定单独的参数,只需执行上面的查询即可更新我的答案如果您喜欢我的努力,请批准我的答案。尽管之前它不起作用,但我也尝试过此方法…可能是我尝试此方法时弄糟的某件事…尽管如此,谢谢