[MONGODB] Mongoose.js는 : 사용자 이름 LIKE 값으로 사용자를 찾습니다
MONGODBMongoose.js는 : 사용자 이름 LIKE 값으로 사용자를 찾습니다
나는 사용자라는 값을보고하여 MongoDB에서 사용자를 찾아 가고 싶다. 문제를 :
username: 'peter'
사용자 이름은 "베드로", 또는 "피터".. 또는 같은 경우 내가 그것을 찾을 해달라고입니다.
나는 SQL처럼하고 싶지 그래서
SELECT * FROM users WHERE username LIKE 'peter'
너희들은 내가 요구하고있는 무슨을 얻을 희망?
짧은 : mongoose.js에서 '필드 LIKE 값'/ MongoDB를
해결법
-
==============================
1.잘. 그냥 답을 찾고있는 사람들을 위해 나는이 같은 짓이었다
잘. 그냥 답을 찾고있는 사람들을 위해 나는이 같은 짓이었다
var name = 'Peter'; model.findOne({name: new RegExp('^'+name+'$', "i")}, function(err, doc) { //Do your action here.. });
-
==============================
2.난 내가 나를 위해이 코드와 잘 작동을 사용하여, 최근에 문제가 있었다.
난 내가 나를 위해이 코드와 잘 작동을 사용하여, 최근에 문제가 있었다.
var data = 'Peter'; db.User.find({'name' : new RegExp(data, 'i')}, function(err, docs){ cb(docs); });
직접 / 피터 / 내가 일을 사용하여,하지만 난 '/'+ 데이터 + 나에게 '/ I'가 아니라 작업 사용합니다.
-
==============================
3.
db.users.find( { 'username' : { '$regex' : req.body.keyWord, '$options' : 'i' } } )
-
==============================
4.
collection.findOne({ username: /peter/i }, function (err, user) { assert(/peter/i.test(user.username)) })
-
==============================
5.당신은 그것을 위해 정규식을 사용합니다.
당신은 그것을 위해 정규식을 사용합니다.
db.users.find({name: /peter/i});
이 쿼리는 인덱스를 사용하지 않는,하지만,주의하십시오.
-
==============================
6.
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); }); });
-
==============================
7.발견을위한 몽구스 문서. 정규식에 대한 MongoDB를의 문서.
발견을위한 몽구스 문서. 정규식에 대한 MongoDB를의 문서.
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 함수에 전달하는 첫 번째 인수를 참고 : { "이름": {$ 정규식 : / 유령 / $ 옵션 : 'I'}} "이름은"당신이 찾고있는 문서의 필드, "유령"이다 정규 표현식은 "내가"대소 문자를 구분하지 일치하는 것입니다이다. 이 당신을 도울 것입니다 바랍니다.
-
==============================
8.다음 쿼리는 소문자를 구별하고 글로벌 발생에 필요한 문자열 케이스 문서를 찾을 수 있습니다
다음 쿼리는 소문자를 구별하고 글로벌 발생에 필요한 문자열 케이스 문서를 찾을 수 있습니다
var name = 'Peter'; db.User.find({name:{ $regex: new RegExp(name, "ig") } },function(err, doc) { //Your code here... });
-
==============================
9.이것은 내가 사용하는 것이다.
이것은 내가 사용하는 것이다.
module.exports.getBookByName = function(name,callback){ var query = { name: {$regex : name} } User.find(query,callback); }
-
==============================
10.expressJS 내 코드 여기 :
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); }); });
-
==============================
11.나는 어떤 조건에서 모든 기록을 조회 할 경우,이를 사용할 수 있습니다 :
나는 어떤 조건에서 모든 기록을 조회 할 경우,이를 사용할 수 있습니다 :
if (userId == 'admin') userId = {'$regex': '.*.*'}; User.where('status', 1).where('creator', userId);
-
==============================
12.그냥 @PeterBechP의 대답을 보완.
그냥 @PeterBechP의 대답을 보완.
특수 문자를 촉각 근하는 것을 잊지 마십시오. https://stackoverflow.com/a/6969486
function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); } var name = 'Peter+with+special+chars'; model.findOne({name: new RegExp('^'+escapeRegExp(name)+'$', "i")}, function(err, doc) { //Do your action here.. });
from https://stackoverflow.com/questions/9824010/mongoose-js-find-user-by-username-like-value by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게하여 MongoDB에 대소 문자를 구분하지 쿼리를해야합니까? (0) | 2019.12.07 |
---|---|
[MONGODB] 동일한 서버에 MongoDB를의 여러 인스턴스 (0) | 2019.12.07 |
[MONGODB] 내가 컬렉션을 채울 때 쿼리에서 반환하지 않도록하는 방법 몽구스 / MongoDB를에서 암호 필드를 보호하기 위해? (0) | 2019.12.07 |
[MONGODB] 몽구스 _id 문자열 비교 (0) | 2019.12.07 |
[MONGODB] 'MODULE_NOT_FOUND'} JS-bson : 모듈 '../build/Release/bson'] 코드를 찾을 수 없습니다 부하 C ++ bson 확장, 순수 JS 버전을 사용하여 실패 (0) | 2019.12.07 |