Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用mongoose查询正则表达式的mongodb集合_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

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

您不需要为名称指定单独的参数,只需执行上面的查询即可

更新我的答案如果您喜欢我的努力,请批准我的答案。尽管之前它不起作用,但我也尝试过此方法…可能是我尝试此方法时弄糟的某件事…尽管如此,谢谢