javascript - findbyid - mongoose projection
Mongoose.js: Encontrar usuario por nombre de usuario LIKE value (11)
Aquí mi código con 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);
});
});
Me gusta encontrar un usuario en mongoDb buscando un usuario llamado valor. El problema con:
username: ''peter''
es que no lo encuentro si el nombre de usuario es "Peter", o "PeTER" ... o algo así.
Así que quiero hacer como sql
SELECT * FROM users WHERE username LIKE ''peter''
Espero que entiendan lo que estoy pidiendo?
Corto: ''campo LIKE value'' en mongoose.js / mongodb
Bien. Solo para las personas que están buscando la respuesta que era, me gustó esto
var name = ''Peter'';
model.findOne({name: new RegExp(''^''+name+''$'', "i")}, function(err, doc) {
//Do your action here..
});
Deberías usar una expresión regular para eso.
db.users.find({name: /peter/i});
Tenga cuidado, sin embargo, que esta consulta no use índice.
Esto es lo que estoy usando.
module.exports.getBookByName = function(name,callback){
var query = {
name: {$regex : name}
}
User.find(query,callback);
}
La siguiente consulta encontrará los documentos con la secuencia de cadena requerida insensiblemente y con la ocurrencia global también
var name = ''Peter'';
db.User.find({name:{
$regex: new RegExp(name, "ig")
}
},function(err, doc) {
//Your code here...
});
Tuve problemas con esto recientemente, uso este código y funciono bien para mí.
var data = ''Peter'';
db.User.find({''name'' : new RegExp(data, ''i'')}, function(err, docs){
cb(docs);
});
Usar directamente /Peter/i
work, pero uso ''/''+data+''/i''
y no funciona para mí.
mangosta doc para encontrar. mongodb doc para 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);
});
Tenga en cuenta el primer argumento que pasamos a la función mongoose.findOne. "{" name ": {$ regex: / Ghost /, $ options: ''i''}}". "nombre" es el campo del documento que está buscando. "Fantasma" es la expresión regular. "i" es para una coincidencia insensible a mayúsculas y minúsculas. Espero que esto te ayudará.
si quiero consultar todo el registro en alguna condición, puedo usar esto:
if (userId == ''admin'')
userId = {''$regex'': ''.*.*''};
User.where(''status'', 1).where(''creator'', userId);
collection.findOne({
username: /peter/i
}, function (err, user) {
assert(/peter/i.test(user.username))
})
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);
});
});