如何匹配MongoDb中的字符串并忽略任何空格

时间:2014-01-13 00:46:50

标签: regex node.js mongodb

是否可以在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解析行中更容易处理这个问题,以某种方式替换并“标准化”所有可能的空格字符? (任何推荐的库都这样做?)

0 个答案:

没有答案