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... });
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式。 “我”是不区分大小写的匹配。 希望这会帮助你。
这是我正在使用的。
module.exports.getBookByName = function(name,callback){ var query = { name: {$regex : name} } User.find(query,callback); }
如果我想在某些条件下查询所有logging,我可以使用这个:
if (userId == 'admin') userId = {'$regex': '.*.*'}; User.where('status', 1).where('creator', userId);
db.users.find( { 'username' : { '$regex' : req.body.keyWord, '$options' : 'i' } } )