我正在用mongoDB作爲後端構建一個web應用程序。有些文件需要在某種列表中存儲項目集合,然後系統需要經常檢查列表中是否存在指定的項目。使用Python的'in'運算符需要Big-O(N)時間,n是列表的大小。由於這些列表可能會變得很大,我想要比這更快的東西。 Python的'set'類型在常量時間內執行這個操作(並且強制唯一性,這在我的情況中是很好的),但是被認爲是放入MongoDB的無效數據類型。Mongodb與Python的「set()」類型
那麼最好的辦法是什麼?有什麼方法可以使用常規列表並利用mongo的索引功能?同樣,我想知道,對於集合中的給定文檔,該文檔中的列表是否包含特定元素?
請注意,Big-O(n)時間*是*線性時間,並且'set'在平均情況下(即* constant * time)在Big-O(1)時間內起作用。然而,'set'在最壞的情況下仍然是Big-O(n)時間(它也可能是Big-O(log n)最差的時間,但我認爲Python的是O(n)...) – cha0site 2012-02-02 17:01:39
最壞的情況是隻有當你有100%的碰撞。它作爲一個Hastable來實現,它和字典一樣多(1)。 – 2018-02-14 16:24:27
@ cha0site對不起,我打算寫*常量*時間,而不是*線性*。我糾正了它 – 2018-02-14 19:39:44