Javascript 通过Node.js将谷歌式搜索查询转换为搜索Mongo数据库

Javascript 通过Node.js将谷歌式搜索查询转换为搜索Mongo数据库,javascript,regex,Javascript,Regex,我希望能够将“GoogleEqsue”格式的搜索字符串转换为可以用于搜索Mongo数据库的内容(我认为RegEx在这里是一个好主意,但我对其他想法持开放态度)。我所说的谷歌式查询是指: "Search for" +this -"but not this" 理想情况下,我正在寻找一种Javascript算法,它将接受谷歌式的查询,并返回一些允许我在MongoDB中对文档文本执行单一、快速查询的内容。我认为最好将其转换为RegExp的原因是正则表达式符合这些目标(已编辑)。您尝试过mongo的新功

我希望能够将“GoogleEqsue”格式的搜索字符串转换为可以用于搜索Mongo数据库的内容(我认为RegEx在这里是一个好主意,但我对其他想法持开放态度)。我所说的谷歌式查询是指:

"Search for" +this -"but not this"
理想情况下,我正在寻找一种Javascript算法,它将接受谷歌式的查询,并返回一些允许我在MongoDB中对文档文本执行单一、快速查询的内容。我认为最好将其转换为RegExp的原因是正则表达式符合这些目标(已编辑)。

您尝试过mongo的新功能吗

对于短语(即转义引号中的术语),搜索将对搜索字符串中的任何其他术语执行AND;e、 g.搜索“\”闪烁“\”小星星“搜索“闪烁”和(“小”或“星星”)

搜索包含单词bake或coffee,但不包含cake的文档:

使用-作为术语的前缀,在搜索字符串中指定否定。查询返回的文档在内容字段中包含烘焙或咖啡,但不包含蛋糕,不区分大小写


你的理由是错误的。正则表达式在不同的语言之间可以(而且确实)有很大的不同。很公平。那么,让我们将推理局限于Mongo+Node.js,还有一些跨平台语言可以用来获得相同的可移植性。如果我是你,我会创建你想要使用的轮子。我已经编辑了我的问题,希望能更好地说明这个问题。我想在Mongo数据库上执行一个查询;我的假设是RegExp是最好的方法。我对Mongo一无所知,但通常使用一个regex来搜索这样多个匹配条件(看起来像
^(?=.*搜索这个)(?=.*这个)(?!.*但不是这个)
)不是很有效(在大字符串上)。哦,伙计,这正是我想要的!令人惊讶的是,它刚刚在上周左右被宣布。不幸的是。。。我在生产服务器上一直使用MongoDB 2.0.2,因此这不是一个选项:(
db.collection.runCommand( "text", { search: "bake coffee -cake" } )