Il est très probable que vous rencontriez un goulot d'étranglement très courant dans MongoDB. Étant donné que vous mettez à jour des documents très fréquemment en ajoutant des chaînes, il y a de fortes chances que vous manquiez d'espace pour ce document et que vous forciez la base de données à déplacer constamment ce document vers un espace différent en mémoire\disque en le réécrivant à la fin du fichier de données.
L'ajout d'index ne peut que nuire aux performances d'écriture, ce qui n'aidera pas à améliorer les performances, sauf si vous êtes lourd en lecture.
J'envisagerais de modifier la logique de votre application pour faire ceci :
- Index sur le champ du mot-clé
- Avant d'insérer quoi que ce soit dans la base de données chaque fois que vous détectez un tweet, recherchez le document qui contient le mot-clé. S'il n'existe pas, insérez un nouveau document mais complétez les
ids
propriété en ajoutant tout un tas de fausses chaînes dans le tableau. Ensuite, immédiatement après l'avoir inséré, supprimez tous les identifiants de ce tableau. Cela amènera mongodb à allouer de l'espace supplémentaire pour l'ensemble de ce document afin que lorsque vous commencerez à ajouter des identifiants au champ des identifiants, il aura beaucoup de place pour se développer. - Insérez l'identifiant du tweet dans les
ids
champ