C'est parce que \b
ne correspond que s'il y a un caractère de mot de chaque côté. Dans votre cas, le \b
est entouré d'un espace et d'une parenthèse ouvrante/fermante, qui ne sont ni l'un ni l'autre un caractère "mot". Donc le \b
la correspondance échoue.
Vous pourriez faire
\\b0aef4666-3627-4c24-8e50-b0cf9a723823\\b
qui correspondra au \b
parce que maintenant c'est sur une limite de mots.
Vous pouvez également faire correspondre un espace OU un début/fin de ligne :
db.test.find({"text": /(^|\s)\(0aef4666-3627-4c24-8e50-b0cf9a723823\)($|\s)/i} )