Mongoose.js:通过用户名LIKE值查找用户

我喜欢通过寻找一个名为value的用户来在mongoDb中find一个用户。 问题在于:

username: 'peter' 

是,如果用户名是“彼得”,或“佩特”..或类似的东西,我不会find它。

所以我想要像SQL一样

 SELECT * FROM users WHERE username LIKE 'peter' 

希望你们能得到我所要求的?

短:mongoose.js / mongodb中的“字段LIKE值”

好。 只为寻找答案的人我是我喜欢这个

 var name = 'Peter'; model.findOne({name: new RegExp('^'+name+'$', "i")}, function(err, doc) { //Do your action here.. }); 

最近我遇到了问题,我使用这个代码,对我来说工作得很好。

 var data = 'Peter'; db.User.find({'name' : new RegExp(data, 'i')}, function(err, docs){ cb(docs); }); 

直接使用/Peter/i工作,但我使用'/'+data+'/i' ,不为我工作。

 collection.findOne({ username: /peter/i }, function (err, user) { assert(/peter/i.test(user.username)) }) 

你应该使用一个正则expression式。

 db.users.find({name: /peter/i}); 

不过要小心,这个查询不使用索引。

 router.route('/product/name/:name') .get(function(req, res) { var regex = new RegExp(req.params.name, "i") , query = { description: regex }; Product.find(query, function(err, products) { if (err) { res.json(err); } res.json(products); }); }); 

在这里我的代码与expressJS:

 router.route('/wordslike/:word') .get(function(request, response) { var word = request.params.word; Word.find({'sentence' : new RegExp(word, 'i')}, function(err, words){ if (err) {response.send(err);} response.json(words); }); }); 

以下查询将查找所需string不区分大小写的文档, 并且也会全局出现

 var name = 'Peter'; db.User.find({name:{ $regex: new RegExp(name, "ig") } },function(err, doc) { //Your code here... }); 

这是我正在使用的。

 module.exports.getBookByName = function(name,callback){ var query = { name: {$regex : name} } User.find(query,callback); } 

mongoosedoc找。 mongodb文档的正则expression式。

 var Person = mongoose.model('Person', yourSchema); // find each person with a name contains 'Ghost' Person.findOne({ "name" : { $regex: /Ghost/, $options: 'i' } }, function (err, person) { if (err) return handleError(err); console.log('%s %s is a %s.', person.name.first, person.name.last, person.occupation); }); 

注意我们传递给mongoose.findOne函数的第一个参数。 “{”name“:{$ regex:/ Ghost /,$ options:'i'}}” “name”是您正在search的文档的字段。 “鬼”是正则expression式。 “我”是不区分大小写的匹配。 希望这会帮助你。

 db.users.find( { 'username' : { '$regex' : req.body.keyWord, '$options' : 'i' } } ) 

如果我想在某些条件下查询所有logging,我可以使用这个:

 if (userId == 'admin') userId = {'$regex': '.*.*'}; User.where('status', 1).where('creator', userId);