Maison > Questions et réponses > le corps du texte
假设记录表中存有用户每次买东西所花的钱,那么问题来了,如何将用户已购买东西花费金额的
累计和(假设此类统计字段有5个),做降序排列?
PHPz2017-04-18 09:38:48
Activez l'index de mongodb pour les champs correspondants que vous devez filtrer (mongodb prend en charge plusieurs index sous une seule collection), c'est-à-dire l'index puisqu'il utilise une table de hachage, il devrait être beaucoup plus rapide et vous pouvez utiliser la propre API de mongodb pour le tri. . , je n'ai jamais rencontré la situation de 100W
, mais je me souviens que la taille de 1~10W
semble être dans 500ms
À titre de comparaison, sans ouvrir l'index, je ne peux pas vivre ma propre vie.
De plus, si les données que vous devez compter sont très importantes et que la fréquence des appels est élevée, il est recommandé de créer une collection distincte, d'appeler régulièrement le cache de file d'attente et d'échanger de l'espace contre du temps. Cette collection peut avoir les éléments suivants. champs, identifiant utilisateur, récent Le nombre total d'achats au cours des 3 heures, les 12 dernières heures, les dernières 24 heures, la journée passée, le mois dernier, le volume total des achats dans le passé, etc. L'inconvénient est que cela gaspille de l'espace et ne peut pas refléter les données en temps réel, mais les avantages sont évidents. Si vous souhaitez interroger le volume d'achats d'un utilisateur, vous pouvez simplement l'interroger, avec une réponse en millisecondes
.Ce qui précède n'est que l'opinion d'une famille et est à titre de référence seulement
巴扎黑2017-04-18 09:38:48
Vous pouvez charger toutes les données de la collection en mémoire, puis les traiter.
ringa_lee2017-04-18 09:38:48
Mongodb n'est pas doué pour traiter les données de plusieurs collections, il est donc préférable de les regrouper toutes ensemble lors de la conception des données elles-mêmes.
Créez un index pour la requête d'une seule collection. L'ordre d'utilisation de la requête est : requête de base->agrégation->mapreduce. devenant de plus en plus bas.
L'interrogation de plusieurs collections doit être mise en œuvre par vous-même, en interrogeant chaque collection séparément et en traitant plusieurs résultats de requête.
Pour ceux qui ont des exigences de rapidité particulièrement élevées, utilisez une couche de cache intermédiaire et concevez une stratégie de mise à jour.