È perché \b
corrisponde solo se è presente un carattere parola su entrambi i lati. Nel tuo caso, il \b
è racchiuso da un carattere spazio e da una parentesi aperta/chiusa, nessuno dei quali è un carattere "parola". Pertanto il \b
corrispondenza non riuscita.
Potresti fare
\\b0aef4666-3627-4c24-8e50-b0cf9a723823\\b
che corrisponderà a \b
perché ora è su un confine di parole.
In alternativa, puoi confrontare uno spazio OPPURE inizio/fine riga:
db.test.find({"text": /(^|\s)\(0aef4666-3627-4c24-8e50-b0cf9a723823\)($|\s)/i} )