mongodb - le nombre de pymongo est lent
PHPz
PHPz 2017-05-17 10:03:55
0
1
1225

Trente mille données, chaque donnée ne contient qu'un nombre aléatoire {"chiffre": nombre aléatoire}
Exigence : comptez le nombre qui apparaît le plus de fois
Table de base de données

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))

Il faut cinq ou six minutes pour exécuter une fois. Utiliser le multithread pour exécuter 100 n'est pas beaucoup plus rapide. Le ventilateur est également très bruyant...
Quelle est la bonne posture ?

PHPz
PHPz

学习是最好的投资!

répondre à tous(1)
迷茫

La bonne posture est d'utiliser l'agrégation.

db.table.aggregate([
    {$group: {_id: "$digit", count: {$sum: 1}}},    // 统计每个数字出现的次数
    {$sort: {count: -1}},    // 逆序排列
    {$limit: 1}    // 取第1条记录
]);
Les utilisateurs du

$group peuvent se référer à la documentation.
Il convient de noter que la possibilité qu'une telle demande apparaisse dans la réalité n'est pas élevée. On estime qu'il s'agit d'une question pratique pour vous. En fait, même si Aggregatoin est utilisé, il est toujours nécessaire de parcourir toutes les données de l'ensemble de la collection pour trouver le nombre le plus fréquent. Par conséquent, lorsque le nombre total d'enregistrements dans la collection est relativement important, une telle opération de parcours complet de la table est nécessaire. ne peut pas être rapide.Ce type de méthode de recherche n'est généralement disponible que dans les scénarios OLAP, et OLAP n'a généralement pas d'exigences de vitesse élevée. Par conséquent, le cadre d’agrégation devrait être utilisé uniquement à partir d’une discussion théorique, mais les besoins réels nécessitent encore une analyse détaillée.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal