javascript - Mongoose 使用正则表达式查找不起作用

标签 javascript node.js mongodb mongoose

我尝试在 MongoDB 中使用 Mongoose 进行选择,如下所示:

SQL 从名称类似于“%Sorv%”的产品中选择 *;

所以,我有一个产品模型:

mongoose.model('Products'
    , new mongoose.Schema({
            name: {type: String, default: ''},
            price: {type: Number, default: 0},
            prices: [Number]
        })
    , 'products');

如果我尝试在 Product 模型中获取所有寄存器,它将返回正确的结果:

Product.find()
        .then(function (result)
        {
            var names = result.map(function (item)
            {
                return item.name;
            });
            // return ["Sorvete", "Sorvete Morango", "Sorvete Morango", "Sorvete", "Sorvete"]
            console.log(names);
        });

为什么当我使用Regex进行查找时,根据Mongoose文档,它返回一个空数组?

Product.find({name: /Sorv/})
        .then(function (result)
        {
            // return a empty array: []
            console.log(result);
        });
<小时/>

如果我设置 mongoose.set('debug', true); 并执行以下代码:

Product.find({ name: new RegExp('sorv', 'i') })
.then(function(r){
    console.log(r);
})

这对我来说返回以下错误:

[0;36mMongoose:[0m products.find({ name: [32m'/sorv/i'[39m }) { fields: [90mundefined[39m } 

但是如果我在 mongo 命令中执行查询,它会返回正确的结果

//Return correct results
db.products.find({name: /sorv/i})

我使用的 Mongoose 版本是:

console.log(mongoose.version);
4.2.5

最佳答案

我遇到了同样的问题,设法像下面一样解决它(如 here 中所述)

Product.find({ name: { $regex: 'sorv', $options: 'i'}})

关于javascript - Mongoose 使用正则表达式查找不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33745479/

相关文章:

javascript - Sequelize-auto 无法连接到命名的 MSSQL 实例

javascript - 使用 let 和 var 在函数体中重新声明

javascript - 如何使用nodejs walk模块将目录遍历到一级

javascript - 在 MEAN 堆栈应用程序中从 mongodb 获取 "404 not found"

javascript - 创建一个 JS 函数将 bool 值发送到 Coldfusion 过滤器函数?

javascript - 如何在同一页面上异步显示表单发布数据(不刷新页面)?

php - 连接到 mongodb 服务器时为 "Invalid ns"

sql - MongoDB 或 CouchDB 或其他?

javascript - MySQL 在多行和多个字段上选择 AND

mysql - 使用 Cloud Spanner 从数据库中删除记录