Pertanyaan Mongoose.js: Temukan pengguna berdasarkan nama pengguna LIKE value


Saya ingin pergi mencari pengguna di mongoDb dengan mencari nilai yang disebut pengguna. Masalah dengan:

username: 'peter'

adalah bahwa saya tidak menemukannya jika nama penggunanya adalah "Peter", atau "PeTER" .. atau sesuatu seperti itu.

Jadi saya ingin melakukan seperti sql

SELECT * FROM users WHERE username LIKE 'peter'

Semoga kalian mendapatkan apa yang im askin?

Singkat: 'field LIKE value' di mongoose.js / mongodb


75
2018-03-22 14:12


asal


Jawaban:


Baik. Hanya untuk orang-orang yang mencari jawaban saya adalah saya suka ini

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

122
2018-03-29 19:52



Saya memiliki masalah dengan ini baru-baru ini, saya menggunakan kode ini dan bekerja dengan baik untuk saya.

var data = 'Peter';

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

Gunakan secara langsung /Peter/i bekerja, tetapi saya gunakan '/'+data+'/i' dan tidak bekerja untukku.


57
2018-03-22 14:52



Anda harus menggunakan regex untuk itu.

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

Waspadalah, meskipun, bahwa permintaan ini tidak menggunakan indeks.


13
2018-03-22 14:13



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

13
2018-03-22 14:14



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);
    });

});  

11
2017-07-16 22:27



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

10
2017-08-03 15:17



Di sini kode saya dengan 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);
            });
         });

5
2017-10-14 03:51



Query berikut akan menemukan dokumen dengan string yang dibutuhkan case insensitive dan dengan kejadian global juga

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

4
2017-11-28 06:04



Ini yang saya gunakan.

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

4
2018-06-27 06:14



dokumen luwak untuk ditemukan. mongodb doc untuk regex.

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);
});

Perhatikan argumen pertama yang kami berikan kepada fungsi Mongoose.findOne. "{" name ": {$ regex: / Ghost /, $ options: 'i'}}". "nama" adalah bidang dokumen yang Anda cari. "Hantu" adalah ekspresi reguler. "i" adalah untuk pencocokan tidak sensitif huruf. Semoga ini akan membantu Anda.


3
2017-07-21 08:08