Ich versuche Dokumente zurückzugeben, deren ObsNum-Feld mit 1.
beginnt. Ich habe folgende RegEx geschrieben jedoch diese Dokumente herausgefiltert werden, es gibt alle Dokumente, die mit 1
MongoDB RegEx funktioniert nicht
Observations.getObservationsModelObject().find({
"ageGroup": ageGroup,
"obsNum": {
$regex: '^\s*1\.'
}
}, function(err, foundData) {});
starten Was mache ich falsch?
Diese RegEx '^\s*1\.'
ist die Rückkehr folgende statt auf 1.3 zurückzukehren, 1,1 & 1.2:
obsNum: 1.3
obsNum: 1.1
obsNum: 1.2
obsNum: 123
obsNum: 121`
Sie übergeben die Regex als String, also müssen Backslashes doppelt maskiert werden. Verwenden Sie '$ regex:/^ \ s * 1 \ ./' – Tushar
@Tushar Sie sind absolut richtig. Das war das einzige Problem mit meiner Regex. Können Sie mir bitte sagen, warum müssen wir einen doppelten Backslash in eine Regex-Zeichenfolge einfügen? – user2498079
In Zeichenketten wird Backslash verwendet, um das folgende Zeichen zu entfernen. Also, eine für die Flucht und andere für Metazeichen in Regex. Oder verwenden Sie einfach die Regex-Literalsyntax wie im ersten Kommentar gezeigt. – Tushar