É porque
\b
só corresponde se houver um caractere de palavra em ambos os lados. No seu caso, o \b
é cercado por um caractere de espaço e um parêntese de abrir/fechar, nenhum dos quais é um caractere de "palavra". Portanto, o \b
partida falha. Você poderia fazer
\\b0aef4666-3627-4c24-8e50-b0cf9a723823\\b
que corresponderá ao
\b
porque agora está em um limite de palavra. Alternativamente, você pode combinar com um espaço OU início/fim de linha:
db.test.find({"text": /(^|\s)\(0aef4666-3627-4c24-8e50-b0cf9a723823\)($|\s)/i} )