Mongo搜索正则表达式忽略了puntuation

时间:2016-10-06 13:05:19

标签: regex mongodb

可以在mongo搜索中创建一个正则表达式来忽略puntuation吗?

我的收藏品中有类似

的内容
$http.get($rootScope.app.authApi + 'questions/' + selectedSubtopic.id)
            .success(function(result){
                $scope.ngtableParams = new ngTableParams({count:5}, {
                    counts:[],
                    paginationMaxBlocks: 13,
                    paginationMinBlocks: 2,
                    total:result.length,
                    dataset: result // might be data instead of dataset depending on ng-table version
                });
            });

所以,如果我找一些123456(我想找到第一个或更多) 如果我找到8430(我需要找到第二个或更多)

我想忽略那个字符串以及字符串是什么时候。

TKS

2 个答案:

答案 0 :(得分:1)

是的,你可以。您是否了解与$options一起使用的$regex运算符?

$options: "x"将帮助您克服这个问题。

答案 1 :(得分: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;
});

我不知道你在做什么,既不是你的需要,但我希望它有所帮助。