Problém je s částečnou shodou, protože neomezujete regulární výraz pro celé slovo, částečná shoda, která existuje v a:b:c
to je a:b
výsledkem je získání tohoto dokumentu.
Použijte následující regulární výraz s ^$
což jsou kotvy, které představují začátek a konec slova;
db.foo.find({path: /^a:[^:]+$/})
db.foo.find({path: /^a:[a-z]+$/})
Tím se regulární výraz použije pro celý řetězec a bude ignorovat částečné shody, jak je vysvětleno výše. Pro více informací o kotvách regulárních výrazů klikněte sem .
Stručně řečeno, nejde o žádnou chybu, pouze o zneužití regulárního výrazu.