Python 的 "set()" 类型与 Mongodb 的结合
我正在用MongoDB作为后台开发一个网页应用。有些文档需要存储一个项目的列表,系统需要经常检查某个特定的项目是否在这个列表里。使用Python的'in'操作符检查这个项目需要的时间是Big-O(N),其中N是列表的大小。因为这些列表可能会很大,所以我想要一种比这更快的方法。Python的'set'类型可以在常量时间内完成这个操作(而且还保证了唯一性,这对我来说是个好事),但在MongoDB中被认为是一种无效的数据类型。
那么,最好的解决办法是什么呢?有没有办法使用普通的列表并利用MongoDB的索引功能?我想知道,对于集合中的某个文档,这个文档里的列表是否包含特定的元素?
1 个回答
6
你可以用字典来表示一个集合。在这个字典里,集合里的每个元素都变成了键,而所有的值可以统一设置为一个常数,比如1。使用'in'这个操作符可以检查某个键是否存在。
补充说明:MongoDB把字典存储为BSON文档,其中的键必须是字符串(还有一些额外的限制),所以上面的建议用处有限。