Tiga puluh ribu keping data, setiap keping data hanya mengandungi nombor rawak {"digit": nombor rawak}
Keperluan: Kira nombor yang paling kerap muncul
Jadual pangkalan data
def main():
digits = []
for d in table.find():
n = d['digit']
digits.append(n)
dig = set(digits)
news = []
i = 0
for d in dig:
c = table.find({"digit": d}).count()
zz = (d, c)
news.append(zz)
print(i)
i += 1
if __name__ == '__main__':
start = time.time()
main()
print('Cost: {}'.format(time.time() - start))
Ia mengambil masa lima atau enam minit untuk berlari sekali menggunakan multi-threading untuk berlari 100 tidak jauh lebih laju.
Postur yang betul ialah menggunakan agregasi.
Pengguna $group boleh merujuk kepada dokumentasi.
Perlu diingatkan bahawa kemungkinan permintaan sedemikian muncul dalam realiti adalah tidak tinggi Dianggarkan bahawa ini adalah soalan latihan untuk anda. Malah, walaupun Aggregatoin digunakan, ia masih perlu merentasi semua data dalam keseluruhan koleksi untuk mencari nombor paling kerap Oleh itu, apabila jumlah rekod dalam koleksi agak besar, operasi lintasan jadual penuh seperti itu tidak boleh pantas. Kaedah carian jenis ini biasanya hanya tersedia dalam senario OLAP dan OLAP biasanya tidak mempunyai keperluan kelajuan tinggi. Oleh itu, hanya dari perbincangan teori, rangka kerja pengagregatan harus digunakan, tetapi keperluan sebenar masih memerlukan analisis terperinci.