2016-10-06 7 views
1

モンゴー検索で正規表現を無視して1つの正規表現を作成することは可能ですか?モンゴー検索正規表現はpuntuationを無視する

私はいくつかの123456(私が最初以上を見つけたい) を探して、私は8430のために見つかった場合(私は2番目を見つける必要がある場合や、私は私のコレクションにそう

123.456.789-01 

or 

33.018.843/09881-20 

のようなものを持っていますmore)

私はpuntuationを無視したいときに、その文字列があります。

tks

答えて

1

はい、可能です。 $regexとなる$options演算子について知っていますか?

$options: "x"これを解決するのに役立ちます。

+0

"x"は、ドキュメントとの空白のみを無視します:https://docs.mongodb.com/manual/reference/operator/query/regex/ –

1

まあ、私は正規表現経由で可能かどうかはわかりません。ただし、回避策はあります、これを見て:

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

次colletion与え

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; 
}); 

私はあなたが何をしているかわからないどちらも、あなたのニーズは何ですが、Iそれが役に立つと願っています。