Je to proto, že \b
odpovídá pouze tehdy, je-li na obou stranách znak slova. Ve vašem případě \b
je obklopen mezerou a otevřenou/zavřenou závorkou, z nichž ani jedna není znakem „slova“. Proto \b
shoda se nezdaří.
Mohl bys to udělat
\\b0aef4666-3627-4c24-8e50-b0cf9a723823\\b
který bude odpovídat \b
protože nyní je na hranici slova.
Případně můžete porovnat mezeru NEBO začátek/konec řádku:
db.test.find({"text": /(^|\s)\(0aef4666-3627-4c24-8e50-b0cf9a723823\)($|\s)/i} )