MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongooseJS/MongoDB-Suche nach exakter Phrase

Ich denke, Sie haben Recht, dass es wahrscheinlich am einfachsten ist, zu überprüfen, ob die ersten und letzten Zeichen Anführungszeichen sind. Mungo selbst kann dies jedoch nicht. Ich schlage vor, die Abfrage vorher vorzubereiten und auch das passende find auszuwählen Methode.

Wir können auch den $regex verwenden -Operator, um den angegebenen regulären Ausdruck für die Eigenschaft „Schlüsselwort“ jedes Dokuments in der Sammlung auszuführen.

var userInput = '"Apple"';
var term = userInput.trim(); 
var caseInsensitive = true; // = some user input?

var isExactTerm = (function() {
    var firstChar = term[0];
    var lastChar = term[term.length - 1];
    return (firstChar === '"' && lastChar === '"');
}();

if(isExactTerm) {
    // Remove quotes from the query
    term = term.substr(1, str.length - 1);
}

var method = (isExactTerm) ? 'findOne': 'find';
var regexFlags = (caseInsensitive) ? 'i' : '';
var query = (isExactTerm) ? term : {$regex: new RegExp(term, regexFlags)};

Model[method]({
    keyword: query
}).exec().then(function(result) {
    // do stuff with `result`
}, function(err) {
    // handle `err`
});