我有一个电话号码,例如+1234567890。电话号码在数据库中存储为+ 123-456-789或+ 123-(456)-(789)。如何使用MongoDB查询将我的电话号码+1234567890与+ 123-456-789或+ 123-(456)-(789)匹配。
像{removeSpecialCharacters(phoneno):1234567890}
答案 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”。
希望有帮助。