Das liegt daran, dass \b
stimmt nur überein, wenn auf beiden Seiten ein Wortzeichen steht. In Ihrem Fall der \b
ist von einem Leerzeichen und einer öffnenden/schließenden Klammer umgeben, die beide keine "Wort"-Zeichen sind. Daher der \b
Übereinstimmung schlägt fehl.
Könntest du machen
\\b0aef4666-3627-4c24-8e50-b0cf9a723823\\b
was mit \b
übereinstimmt weil es sich jetzt an einer Wortgrenze befindet.
Alternativ könnten Sie mit einem Leerzeichen ODER Zeilenanfang/Zeilenende übereinstimmen:
db.test.find({"text": /(^|\s)\(0aef4666-3627-4c24-8e50-b0cf9a723823\)($|\s)/i} )