Ini adalah soalan yang sangat bagus, secara ringkasnya MongoDB tidak menjamin sama ada hasilnya mengandungi dokumen baharu kerana ia melibatkan berbilang dokumen, malah dokumen yang mungkin akan dimasukkan pada masa hadapan. Dalam pangkalan data tradisional, adalah mungkin untuk membaca nilai yang baru dimasukkan Anomali ini dipanggil Phantom Tahap pengasingan yang boleh memenuhi ini ialah yang boleh disiri (boleh bersiri), iaitu Dalam contoh, dua set operasi, satu bacaan. dan satu tulisan, nampaknya dilakukan satu demi satu. Kos melaksanakan mekanisme kunci juga sangat tinggi, dan prestasinya agak lemah. Lihat kertas ini. Kembali ke MongoDB, MongoDB menggunakan dokumen sebagai unit dan boleh memastikan pengasingan peringkat dokumen, tetapi ia tidak menjamin pengasingan (kebebasan) operasi antara berbilang dokumen, dan tidak menyokong transaksi, sebagai pertukaran untuk prestasi tinggi.
@huandu betul Apabila anda menguji, gunakan find().batchSize(2) untuk membaca 2 dokumen dalam setiap kumpulan, dan anda akan mendapati bahawa dokumen yang baru ditambah boleh dibaca. BatchSize lalai dalam cangkerang ialah 20, yang mungkin tidak mudah untuk diperhatikan. Jangan gunakan batchSize(1), yang sama dengan limit() atas sebab sejarah.
Kursor mongodb tidak mempunyai pengasingan dan mungkin mengembalikan data yang dikemas kini.
Walau bagaimanapun, semasa percubaan sebenar, didapati bahawa tidak kira bagaimana cara dimasukkan, kursor tidak dapat mengembalikan data yang baru dimasukkan. Ini mungkin perincian pelaksanaan mongodb, atau mungkin kursor hanya boleh mengakses data yang baru dimasukkan dalam keadaan khas tertentu Secara ringkasnya, tiada sokongan dokumentasi dan tingkah laku ini tidak boleh dipercayai.
Ini adalah soalan yang sangat bagus, secara ringkasnya MongoDB tidak menjamin sama ada hasilnya mengandungi dokumen baharu kerana ia melibatkan berbilang dokumen, malah dokumen yang mungkin akan dimasukkan pada masa hadapan. Dalam pangkalan data tradisional, adalah mungkin untuk membaca nilai yang baru dimasukkan Anomali ini dipanggil Phantom Tahap pengasingan yang boleh memenuhi ini ialah yang boleh disiri (boleh bersiri), iaitu Dalam contoh, dua set operasi, satu bacaan. dan satu tulisan, nampaknya dilakukan satu demi satu. Kos melaksanakan mekanisme kunci juga sangat tinggi, dan prestasinya agak lemah. Lihat kertas ini. Kembali ke MongoDB, MongoDB menggunakan dokumen sebagai unit dan boleh memastikan pengasingan peringkat dokumen, tetapi ia tidak menjamin pengasingan (kebebasan) operasi antara berbilang dokumen, dan tidak menyokong transaksi, sebagai pertukaran untuk prestasi tinggi.
@huandu betul Apabila anda menguji, gunakan
find().batchSize(2)
untuk membaca 2 dokumen dalam setiap kumpulan, dan anda akan mendapati bahawa dokumen yang baru ditambah boleh dibaca. BatchSize lalai dalam cangkerang ialah 20, yang mungkin tidak mudah untuk diperhatikan. Jangan gunakan batchSize(1), yang sama dengan limit() atas sebab sejarah.Tidak semestinya.
Kursor mongodb tidak mempunyai pengasingan dan mungkin mengembalikan data yang dikemas kini.
Walau bagaimanapun, semasa percubaan sebenar, didapati bahawa tidak kira bagaimana cara dimasukkan, kursor tidak dapat mengembalikan data yang baru dimasukkan. Ini mungkin perincian pelaksanaan mongodb, atau mungkin kursor hanya boleh mengakses data yang baru dimasukkan dalam keadaan khas tertentu Secara ringkasnya, tiada sokongan dokumentasi dan tingkah laku ini tidak boleh dipercayai.