dev*_*ext 13 mongoose mongodb node.js
当我使用mongoose进行查询时,我遇到了问题.I编码遵循此Mongoose.js:按用户名LIKE值查找用户.但它返回空白.
我的代码返回空白.
var promise = UserSchema.find({name: /req.params.keyword/ }).limit(5);
Run Code Online (Sandbox Code Playgroud)
我试过这个回归空白似乎.
var n = john; var promise = UserSchema.find({name: /n/ }).limit(5);
但我试过这是有效的
var promise = UserSchema.find({name: /john/ }).limit(5);
Run Code Online (Sandbox Code Playgroud)
为什么我使用变量然后返回空白?
kum*_*esh 26
$regex在mongodb中使用
例
select * from table where abc like %v%
Run Code Online (Sandbox Code Playgroud)
在蒙戈
var colName="v";
models.customer.find({ "abc": { $regex: '.*' + colName + '.*' } },
function(err,data){
console.log('data',data);
});
Run Code Online (Sandbox Code Playgroud)
你的查询看起来像
var name="john";
UserSchema.find({name: { $regex: '.*' + name + '.*' } }).limit(5);
Run Code Online (Sandbox Code Playgroud)
Nux*_*Nux 16
或者只是简单地
const name = "John"
UserSchema.find({name: {$regex: name, $options: 'i'}}).limit(5);
Run Code Online (Sandbox Code Playgroud)
i不区分大小写
小智 8
这就是我如何查找名称/电子邮件中是否存在搜索字符串的方法。希望它可以帮助某人。
const getPeerSuggestions = async (req, res, next) => {
const { search } = req.query;
const rgx = (pattern) => new RegExp(`.*${pattern}.*`);
const searchRgx = rgx(search);
const peers = await User.find({
$or: [
{ name: { $regex: searchRgx, $options: "i" } },
{ email: { $regex: searchRgx, $options: "i" } },
],
})
.limit(5)
.catch(next);
res.json(peers);
};
Run Code Online (Sandbox Code Playgroud)
您可以使用RegExp对象创建带有变量的正则表达式,如果希望搜索不区分大小写,请添加“ i”标志。
const mongoose = require('mongoose');
const User = mongoose.model('user');
const userRegex = new RegExp(userNameVariable, 'i')
return User.find({name: userRegex})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13693 次 |
| 最近记录: |