Det beror på att \b
matchar bara om det finns ett ordtecken på vardera sidan av det. I ditt fall, \b
är omgiven av ett mellanslagstecken och en öppen/stäng parentes, varav ingen är ett "ord"-tecken. Därför \b
matchningen misslyckas.
Det kan du göra
\\b0aef4666-3627-4c24-8e50-b0cf9a723823\\b
som kommer att matcha \b
för nu är det på en ordgräns.
Alternativt kan du matcha mot ett mellanslag ELLER start/end-of-line:
db.test.find({"text": /(^|\s)\(0aef4666-3627-4c24-8e50-b0cf9a723823\)($|\s)/i} )