如何使用正则表达式和使用查找/聚合匹配数据?

时间:2019-08-28 07:26:38

标签: javascript node.js mongodb mongodb-query

我有一个电话号码,例如+1234567890。电话号码在数据库中存储为+ 123-456-789或+ 123-(456)-(789)。如何使用MongoDB查询将我的电话号码+1234567890与+ 123-456-789或+ 123-(456)-(789)匹配。

像{removeSpecialCharacters(phoneno):1234567890}

1 个答案:

答案 0 :(得分:0)

这是我想出的解决方案,因为我看到您也在该问题中标记了“ javascript”。

这不是一个聚合查询,而是我在mongo脚本(可以用mongo执行的Javascript文件)中使用forEach循环遍历每个条目。

数据集

{"name": "SV", phone:"+1234567890"},
{"name": "MV", phone:"+123-(456)-(789)"}

逻辑

var entries = [];
var phone_number_to_be_searched = "+1234567890";
phone_number_to_be_searched = phone_number_to_be_searched.replace(/\D/g,''); 

db.temp.find().forEach(function(entry) {
    var phone = entry["phone"].replace(/\D/g,'');
    if(phone === phone_number_to_be_searched){
        entries.push(entry)
    }
})
print(JSON.stringify(entries));

输出

[{"_id":{"$oid":"5d6cf41ce920d9c4fa760121"},"name":"SV","phone":"+1234567890"}]

如您所见,输出中只有一个条目的电话号码为“ 1234567890”,而另一个条目缺少“ 0”。

希望有帮助。