Мангуста.js: найти пользователя по имени пользователя, как значение
мне нравится искать пользователя в mongoDb, ища пользователя с именем value. Проблема с:
username: 'peter'
это то, что я не нахожу его, если имя пользователя "Питер", или "Питер".. или что-то в этом роде.
Так что я хочу сделать, как sql
SELECT * FROM users WHERE username LIKE 'peter'
надеюсь, вы, ребята, получите то, что я прошу?
Short:' поле как значение ' в мангусте.js / mongodb
11 ответов:
хорошо. Просто для людей, которые ищут ответа я не такой
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'
и не работает для меня.
вы должны использовать регулярное выражение для этого.
db.users.find({name: /peter/i});
будьте осторожны, хотя, что этот запрос не использует индекс.
collection.findOne({ username: /peter/i }, function (err, user) { assert(/peter/i.test(user.username)) })
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); }); });
Это то, что я использую.
module.exports.getBookByName = function(name,callback){ var query = { name: {$regex : name} } User.find(query,callback); }
следующий запрос найдет документы с требуемой строкой регистр нечувствительно и с глобальным возникновением также
var name = 'Peter'; db.User.find({name:{ $regex: new RegExp(name, "ig") } },function(err, doc) { //Your code here... });
Мангуст док для поиска. MongoDB doc для регулярных выражений.
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); });
обратите внимание на первый аргумент, который мы передаем Мангусту.функция findOne. "{ "имя" : { $регулярное выражение: /призрак/, $опции: 'я' } }". "имя" - это поле документа, который вы ищете. "Призрак" - это регулярное выражение. "i" - это совпадение без учета регистра. Надеюсь, это поможет вам.