我尝试在MongoDB
中使用Mongoose
进行选择,如下所示:
SQL
SELECT * FROM PRODUCTS WHERE NAME LIKE '%Sorv%';
所以,我有一个Product
模型:
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
答案 0 :(得分:2)
我遇到了同样的问题,设法解决了下面的问题(如here中所述)
Product.find({ name: { $regex: 'sorv', $options: 'i'}})