Sebenarnya terdapat perbincangan sama ada untuk menambah ciri ini: https://jira.mongodb.org/browse/SERVE..., tetapi nampaknya tiada kemajuan yang ketara pada masa ini.
Malah, MySQL hanya mencipta jadual sementara, menjana nombor rawak untuk semua baris calon, dan kemudian mengisih nombor rawak untuk mendapatkan hasil yang anda perlukan.
Dalam MongoDB, anda perlu membina sendiri atribut pengisihan untuk dokumen Nilai atribut ini boleh menjadi nombor rawak, diambil daripada buku masakan:
Apabila mencari, hitung nombor rawak, dan kemudian pergi ke atribut pengisihan untuk mencari yang paling hampir dengannya, tetapi ingat untuk menambah indeks pada atribut pengisihan:
rand = Math.random()
cmp = Math.random()
result = db.docs.findOne( { key : 2, random : { $gte : rand } } )
if ( result == null ) {
result = db.docs.findOne( { key : 2, random : { $lte : rand } } )
}
Oleh kerana nilai atribut pengisihan tidak dinamik seperti dalam MySQL, jika anda ingin mendapatkan berbilang dokumen secara rawak, anda perlu menggelungkan operasi di atas.
Saya rasa punca masalah ini ialah sama ada kerawak dalam pengertian matematik diperlukan Jika anda hanya mahukan idea kasar, untuk jumlah data yang besar tanpa pengindeksan, anda boleh menggunakan Map/Reduce untuk meningkatkan kelajuan penumpuan.
Jadi, sebenarnya, cap masa juga boleh digunakan Sebarang atribut yang boleh mencari nilai had atas dan bawah tanpa terlalu banyak nilai berulang boleh digunakan untuk pengisihan rawak.
Tambah syarat
"$where":function () { if(Math.random()>0.1){return true;} else{return false;}}
Bekerjasama dengan had(1)
Pilih rekod secara rawak daripada set dengan kebarangkalian 1/10
Ia mungkin lebih mudah, tetapi aplikasinya lebih terhad. Untuk rujukan sahaja~
Sebenarnya terdapat perbincangan sama ada untuk menambah ciri ini: https://jira.mongodb.org/browse/SERVE..., tetapi nampaknya tiada kemajuan yang ketara pada masa ini.
Malah, MySQL hanya mencipta jadual sementara, menjana nombor rawak untuk semua baris calon, dan kemudian mengisih nombor rawak untuk mendapatkan hasil yang anda perlukan.
Dalam MongoDB, anda perlu membina sendiri atribut pengisihan untuk dokumen Nilai atribut ini boleh menjadi nombor rawak, diambil daripada buku masakan:
Apabila mencari, hitung nombor rawak, dan kemudian pergi ke atribut pengisihan untuk mencari yang paling hampir dengannya, tetapi ingat untuk menambah indeks pada atribut pengisihan:
Oleh kerana nilai atribut pengisihan tidak dinamik seperti dalam MySQL, jika anda ingin mendapatkan berbilang dokumen secara rawak, anda perlu menggelungkan operasi di atas.
Saya rasa punca masalah ini ialah sama ada kerawak dalam pengertian matematik diperlukan Jika anda hanya mahukan idea kasar, untuk jumlah data yang besar tanpa pengindeksan, anda boleh menggunakan Map/Reduce untuk meningkatkan kelajuan penumpuan.
Jadi, sebenarnya, cap masa juga boleh digunakan Sebarang atribut yang boleh mencari nilai had atas dan bawah tanpa terlalu banyak nilai berulang boleh digunakan untuk pengisihan rawak.
Tambah syarat
"$where":function () { if(Math.random()>0.1){return true;} else{return false;}}
Bekerjasama dengan had(1)
Pilih rekod secara rawak daripada set dengan kebarangkalian 1/10
Ia mungkin lebih mudah, tetapi aplikasinya lebih terhad. Untuk rujukan sahaja~