2016-10-11 5 views
0

Wie bekomme ich Fahrt von den Anführungszeichen in den $ Regex-Objekten unten.Entfernen von Zitaten aus einem Mongo Regex

{ '$or': 
    [ '{"last":{"$regex":"/.*Pat.*/"}}', 
     '{"first":{"$regex":"/.*Pat.*/"}}' ], 
     thing: 57b713625bf9b85ca824de8c } 

Unten ist der Ansatz, den ich nahm aber es muss einen besseren Weg geben, und es funktioniert nicht, weil ich nicht herausfinden kann, wie als der Wert eines Objekts einen Ausdruck zu bringen.

for (var key in req.query) { 
if (req.query.hasOwnProperty(key)) { 
    if (key === '$or') { 
    for (var item in req.query[key]) { 
     if (req.query[key].hasOwnProperty(item)) { 
     req.query[key][item] = JSON.parse(req.query[key][item]); 
     for (var x in req.query[key][item]) { 
     for (var thereMustBeABetterWayToDoThis in req.query[key][item][x]){ 
      req.query[key][item][x][thereMustBeABetterWayToDoThis] = req.query[key][item][x][thereMustBeABetterWayToDoThis].replace(/["']/g, ""); 
     } 
     } 
     } 
    } 
    } 
} 
+0

Muss dieses Wort '" $ regex "' nur im '$ oder' Schlüssel und in dem von Ihnen erwähnten Objekt ersetzt werden? Oder möchten Sie Zitate aus dem gesamten Objekt entfernen, egal wo "$ regex" erscheint? –

+0

Vorzugsweise überall, wenn es einen einfachen Weg gibt, dies zu tun. – Mika

Antwort

1

Da Sie einen globalen Austausch von "$regex" mit $regex die " entfernen. Ich denke, ein einfacherer Weg kann sein, einfach den JSON zu stringulieren und dann eine Regex-Ersetzung durchzuführen und dann den JSON erneut zu analysieren. Ich sage einfach, weil ich nicht bestätigen kann, dass es in Bezug auf Leistung oder Timing am effizientesten ist.

Sie Um ein Beispiel zu geben:

var test = { '$or': 
[ '{"last":{"$regex":"/.*Pat.*/"}}', 
    '{"first":{"$regex":"/.*Pat.*/"}}' ], 
    thing: 57 } 
var test_string = JSON.stringify(test); //Convert it into a string. 

var re = /\\"\$regex\\"/g; 
var output = test_string.replace(re,"$regex"); //Do a simple replace 

var outputObj = JSON.parse(output); //Parse the object. 

//So now you'd want to work with the outputObj 

Der Kern ist diese regexp - \\"\$regex\\". Ich habe eine grundlegende demo erstellt, die erklären würde, wie diese Regex funktioniert und kann auch als ein Spielplatz für Sie dienen, diesen regulären Ausdruck weiter zu erweitern, um Ihren Bedürfnissen zu entsprechen.