Това е защото \b
съвпада само ако от двете му страни има знак за дума. Във вашия случай \b
е заобиколен от знак за интервал и отваряща/затваряща скоба, нито една от които не е знак за "дума". Следователно \b
мачът е неуспешен.
Можете да го направите
\\b0aef4666-3627-4c24-8e50-b0cf9a723823\\b
което ще съответства на \b
защото сега е на границата на думата.
Като алтернатива можете да съпоставите с интервал ИЛИ начало/край на ред:
db.test.find({"text": /(^|\s)\(0aef4666-3627-4c24-8e50-b0cf9a723823\)($|\s)/i} )