Kłopot polega na częściowym dopasowaniu, ponieważ nie ograniczasz wyrażenia regularnego dla całego słowa, częściowego dopasowania, które istnieje w a:b:c
czyli a:b
skutkuje uzyskaniem tego dokumentu.
Użyj następującego wyrażenia regularnego z ^$
które są kotwicami reprezentującymi początek i koniec słowa;
db.foo.find({path: /^a:[^:]+$/})
db.foo.find({path: /^a:[a-z]+$/})
To sprawi, że wyrażenie regularne będzie stosowane do całego łańcucha i zignoruje częściowe dopasowania, jak wyjaśniono powyżej. Aby uzyskać więcej informacji na temat kotwic regex, kliknij tutaj .
Podsumowując, nie ma błędu, tylko niewłaściwe użycie wyrażenia regularnego.