Może to być związane z błędem wprowadzonym w 1.6.0 dotyczącym iteracji z hasNext()
i getNext()
:PHP-1382
. Od tego czasu poprawka została połączona z v1.6 oddział
i powinien zostać wydany jeszcze w tym tygodniu jako 1.6.1.
To powiedziawszy, błąd dotyczący hasNext()
było w rzeczywistości, że ostatni dokument w zestawie wyników zostanie pominięty podczas iteracji. Jeśli uruchomię twój oryginalny skrypt w wersji 1.6.0, tablica zawiera null
wartość jako ostatni element. Po wprowadzeniu poprawki tablica będzie zawierać wszystkie dokumenty zgodnie z oczekiwaniami. Nie mogę odtworzyć wyjątku, który widzisz w żadnej wersji.
Ten wyjątek jest w rzeczywistości zgłaszany z wewnętrznych kontroli struktur danych C, aby upewnić się, że obiekt kursora jest prawidłowo skojarzony z połączeniem MongoClient i gniazdem. Zobacz MONGO_CHECK_INITIALIZED()
wywołania makr w tym pliku
. Większość metod kursora sprawdza, czy MongoClient jest powiązany, ale hasNext()
jest wyjątkowy, ponieważ sprawdza również obiekt gniazda (wierzę, że inne metody po prostu zakładają, że kursor z MongoClient również ma gniazdo). Jeśli ten wyjątek jest dla Ciebie naprawdę powtarzalny i chcesz przeprowadzić debugowanie z rozszerzeniem, byłbym bardzo zainteresowany, aby dowiedzieć się, które z dwóch sprawdzeń powoduje błąd.
Na marginesie, powinieneś również określić "replicaSet"
opcja podczas konstruowania MongoClient. Powinien mieć nazwę zestawu replik, co zapewnia, że sterownik może poprawnie ignorować połączenia z hostami, które nie są członkiem zamierzonego zestawu replik.