Mongo Shell对负向正则表达式的支持

问题描述

Mongo Shell是否不支持负面的后顾之忧?示例:

'aaabbb'.replace(/(?<!a)b/g,'X')

b之前没有的所有a替换为X

浏览器控制台输出

aaabXX

对。但是,如果我将其放入test.js中并执行mongo < ./test.js,则会得到:

MongoDB shell version v3.4.23
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.23
2020-08-14T10:15:13.199-0700 E QUERY    [thread1] SyntaxError: invalid regexp group @(shell):1:17
bye

就ECMAScript而言,我找不到有关Mongo shell支持的任何权威性文档...但看来,它(至少)不支持负面的后顾之忧。发生了什么事?

解决方法

它正在新的MongoDB Shell中运行,

Connecting to:      mongodb://127.0.0.1:27017
Using MongoDB:      4.4.0
Using Mongosh Beta: 0.1.0

> 'aaabbb'.replace(/(?<!a)b/g,'X')
aaabXX

有关mongosh的更多信息,请参阅docsdownload(如果您使用自制软件在macOS上)

$ brew tap mongodb/brew
$ brew install mongosh

我不知道为什么它不能在本地CMD中工作,我在web mongo shell v4.2.0中尝试了但也没有工作。