2016-10-06 23 views
1

它可以在mongo搜索中創建一個正則表達式來忽略puntuation嗎?Mongo搜索正則表達式忽略pundinguation

我在收集類似

123.456.789-01 

or 

33.018.843/09881-20 

所以,如果我找了一些123456(我想找到的第一個或多個) ,如果我發現8430(我需要找到第二或更多)

我想忽略puntuation和字符串的時候。

tks

回答

1

是的,你可以。你知道$options運營商與$regex

$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" 
} 

所以:

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

我不知道你在做什麼,既不是什麼您的需求,但我給出以下總彙

希望它有幫助。