2016-10-06 3 views
1

Es ist möglich, einen Regex in Mongo-Suche zu erstellen, um Puntuation zu ignorieren?Mongo-Suche regex ignorieren puntuation

ich in meiner Sammlung etwas wie

123.456.789-01 

or 

33.018.843/09881-20 

Also, wenn ich für einige aussehen 123456 (Ich möchte die erste oder mehr finden) und wenn ich für 8430 gefunden (Ich brauche die zweite zu finden oder mehr)

Ich möchte die Positionierung ignorieren und wenn diese Zeichenfolge sind.

tks

Antwort

1

Ja, Sie können. Ist Ihnen der $options Operator bekannt, der mit $regex geht?

$options: "x" wird Ihnen helfen, dies zu überwinden.

+0

Aber "x" wird nur Whitespace-Vereinbarung mit doc ignorieren: https://docs.mongodb.com/manual/reference/operator/query/regex/ –

1

Nun, ich bin mir nicht sicher, ob es über Regex möglich ist. Allerdings gibt es ein Problem zu umgehen, sehen folgendermaßen aus:

folgende colletion gegeben:

> db.teste.find() 
{ 
    "_id": ObjectId("57f65bc8b9b3f8a0acacc0c1"), 
    "num": "33.018.843/09]881-20" 
} 
{ 
    "_id": ObjectId("57f65bcbb9b3f8a0acacc0c2"), 
    "num": "123.456.789-01" 
} 

So:

db.teste.find().map(function(doc) { 
    var str = doc.num.replace(/[./\-]/g, ""); 
    if (str.indexOf("8430") > -1) return (doc); 
}).filter(function(e, i) { 
    if (e) return e; 
}); 

Ich weiß nicht, was Sie tun, weder was sind Ihre Bedürfnisse, aber ich hoffe es ist hilfreich.

Verwandte Themen