Valueと呼ばれるユーザーを探して、mongoDbでユーザーを探しに行きたいです。の問題:
username: 'peter'
ユーザー名が「Peter」、「PeTER」、またはそのようなものである場合、私はそれを見つけられないということです。
だから私は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'
を使用します。
db.users.find( { 'username' : { '$regex' : req.body.keyWord, '$options' : 'i' } } )
collection.findOne({
username: /peter/i
}, function (err, user) {
assert(/peter/i.test(user.username))
})
そのためには正規表現を使用する必要があります。
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);
});
});
検索用のマングースドキュメント。正規表現の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
関数に渡す最初の引数に注意してください:{ "name" : { $regex: /Ghost/, $options: 'i' } }
、"name"
は検索するドキュメントのフィールド、"Ghost"
は正規表現、"i"
大文字と小文字を区別しない一致です。これがあなたのお役に立てば幸いです。
次のクエリは、必要な文字列大文字と小文字を区別せずに、グローバルに出現するドキュメントも検索します
var name = 'Peter';
db.User.find({name:{
$regex: new RegExp(name, "ig")
}
},function(err, doc) {
//Your code here...
});
これは私が使用しているものです。
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);
});
});
何らかの条件ですべてのレコードを照会したい場合、これを使用できます。
if (userId == 'admin')
userId = {'$regex': '.*.*'};
User.where('status', 1).where('creator', userId);