Je construis une application web avec mongoDB comme backend. Certains documents doivent stocker une collection d'éléments dans une sorte de liste, puis le système devra vérifier fréquemment si un élément spécifié est présent dans cette liste. L'utilisation de l'opérateur 'in' de Python prend le temps de Big-O (N), n étant la taille de la liste. Comme ces listes peuvent devenir assez volumineuses, je veux quelque chose de plus rapide que cela. Le type 'set' de Python fait cette opération dans le temps constant (et impose l'unicité, ce qui est bien dans mon cas), mais est considéré comme un type de données invalide à mettre dans MongoDB.Mongodb avec le type "set()" de Python
Alors, quelle est la meilleure façon de le faire? Est-il possible d'utiliser simplement une liste régulière et d'exploiter les fonctions d'indexation de mongo? Encore une fois, je veux savoir, pour un document donné dans une collection, une liste à l'intérieur de ce document contient-elle un élément particulier?
Notez que Big-O (n) time * est * temps linéaire, et 'set' fonctionne en Big-O (1) fois dans le cas moyen qui est * temps * constant. Cependant, 'set' est toujours l'heure de Big-O (n) dans le pire des cas (cela peut aussi être Big-O (log n) pire cas, mais je pense que Python est O (n) ...) – cha0site
Le pire des cas est seulement lorsque vous avez 100% de collisions. Il est implémenté comme Hastable, c'est O (1) autant que les dictionnaires. –
@ cha0site désolé je voulais écrire * temps * constant, pas * linéaire *. Je l'ai corrigé –