javascript - update - Mongoose.js:通過用戶名LIKE值查找用戶




timestamp mongoose (8)

以下查詢將查找所需字符串不區分大小寫且全局出現的文檔

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

我喜歡通過查找名為value的用戶來在mongoDb中找到用戶。 問題在於:

username: 'peter'

是,如果用戶名是“彼得”,或“皮特”..或類似的東西,我不會找到它。

所以我想要像SQL一樣

SELECT * FROM users WHERE username LIKE 'peter'

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

Short:mongoose.js / mongodb中的'field LIKE value'


你應該使用一個正則表達式。

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

但請注意,此查詢不使用索引。


如果我想在某些條件下查詢所有記錄,我可以使用這個:

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

最近我遇到了一些問題,我使用這些代碼並且對我很好。

var data = 'Peter';

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

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


這是我正在使用的。

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

這裡我的代碼與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);
            });
         });

db.users.find( { 'username' : { '$regex' : req.body.keyWord, '$options' : '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);
    });

});  




mongoose