我正在使用MongoDB,我有一组具有以下结构的文档:
{
fName:"Foo",
lName:"Barius",
email:"fbarius@example.com",
search:"foo barius"
}
Run Code Online (Sandbox Code Playgroud)
我正在构建一个将在该search字段上执行正则表达式搜索的函数.为了优化性能,我已在搜索字段中为此集合编制索引.然而,事情仍然有点慢.所以我运行了explain()一个示例查询:
db.Collection.find({search:/bar/}).explain();
Run Code Online (Sandbox Code Playgroud)
在获胜计划下,我看到使用了以下索引边界:
"search": [
"[\"\", {})",
"[/.*bar.*/, /.*bar.*/]"
]
Run Code Online (Sandbox Code Playgroud)
第二组是有道理的 - 它从包含条形的任何东西看到包含条形的任何东西.然而,第一集让我感到困惑.它似乎正在寻找""包容性与{}排他性的界限.我担心这个额外的界限会减慢我的查询速度.有必要保留吗?如果不是,我怎么能阻止它被包括在内?
使用PHP 7.2.8
关于trim()PHP中的函数我有一个奇怪的情况.举个例子,让我说这个陈述:
echo trim("sacas",",\s");
Run Code Online (Sandbox Code Playgroud)
我明白了
aca
Run Code Online (Sandbox Code Playgroud)
结果是.此外,如果我拨打一个略有不同的电话:
echo trim(" sacas",",\s")
Run Code Online (Sandbox Code Playgroud)
我明白了
saca
Run Code Online (Sandbox Code Playgroud)
(如果很难看到,领先的空间仍然存在).
作为最好的,我可以告诉大家,什么是发生的是trim,它去除了匹配一组指定的所有前导和尾随字符,则删除所有s字符,忽略空格.但是/s应该表示空白字符,而根本不匹配s.
任何想法为什么会这样?如果是这样,我怎样才能在留下字符的同时删除空白s?
作为一个说明,我的问题需要我修剪两个逗号和空格出来,所以我不能只是简单地使用TRIM(),没有额外的参数,它不会离开s独自