Ini mungkin terkait dengan bug yang diperkenalkan di 1.6.0 terkait iterasi dengan hasNext()
dan getNext()
:PHP-1382
. Perbaikan telah digabungkan ke v1.6
cabang
dan akan dirilis akhir minggu ini sebagai 1.6.1.
Yang mengatakan, bug tentang hasNext()
sebenarnya dokumen terakhir dalam kumpulan hasil akan terlewatkan saat iterasi. Jika saya menjalankan skrip asli Anda terhadap 1.6.0, array berisi null
nilai sebagai elemen terakhirnya. Dengan perbaikan di tempat, array akan berisi semua dokumen seperti yang diharapkan. Saya tidak dapat mereproduksi pengecualian yang Anda lihat dengan salah satu versi.
Pengecualian itu sebenarnya dilemparkan dari pemeriksaan internal pada struktur data C, untuk memastikan bahwa objek kursor dikaitkan dengan benar dengan koneksi MongoClient dan soket. Lihat MONGO_CHECK_INITIALIZED()
panggilan makro di file ini
. Hampir semua metode kursor memeriksa apakah MongoClient terkait, tetapi hasNext()
unik karena ia juga memeriksa objek soket (saya percaya metode lain hanya menganggap kursor dengan MongoClient juga memiliki soket). Jika pengecualian itu benar-benar dapat direproduksi untuk Anda dan Anda bersedia melakukan beberapa debug dengan ekstensi, saya akan sangat tertarik untuk mengetahui mana dari dua pemeriksaan yang menimbulkan kesalahan.
Sebagai catatan tambahan, Anda juga harus menentukan "replicaSet"
pilihan saat membangun MongoClient. Ini harus memiliki nama kumpulan replika, yang memastikan bahwa driver dapat dengan benar mengabaikan koneksi ke host yang bukan anggota kumpulan replika yang dimaksud.