是否可以在MongoDB查询中使用正则表达式忽略所有空格?
My Node.js程序使用Cheerio从多个网站提取数据,解析然后将数据存储在MongoDB中。我的数据库有一个People
集合,用于键入字符串字段Name
。
如果一个网站(网站A)将名称HTML文本显示为John&npsp;Smith
,而另一个网站(网站B)将名称显示为John Smith
,则会出现问题。我的程序有两个脚本,一个用于擦除站点A,另一个用于刮取站点-B;两者都使用以下内容来刮取Name
数据 -
var $ = cheerio.load(htmlrow);
var personobj = { name: $('td.person a').text().trim() }
然后,每个脚本使用以下MongoDb命令(使用native driver)来插入已删除的数据,并键入Name
字段。但是,这会导致People
集合中的两条记录 -
db.collection('people').update(
{ Name: personobj.name },
{ $set: { LastScan: new Date() }},
{ upsert: true },
function(){} );
现在,我尝试使用正则表达式"extended"'x'选项在MongoDb中进行查询,但它无效。实际上,我尝试通过Robomongo中的find
运算符测试'x'选项,并返回零记录。我还注意到,当我在Robomongo进行find
测试时,我只需输入Name: "John Smith"
,它只会返回网站B记录,即没有$ nbsp;空白;即使我查看两个记录的详细信息,名称字符串也显示相同。 (我想差异是由于所有的编码/解码在某处造成刮擦,解析,存储,检索......但我不确定在哪里或为什么)。
使用正则表达式查询MongoDb时是否可以忽略所有空格?
或者,在我的javascript解析行中更容易处理这个问题,以某种方式替换并“标准化”所有可能的空格字符? (任何推荐的库都这样做?)