添加索引可以帮助加快某些查询的速度,还可以为查询和存储文档添加额外的功能。在本示例中,我们将演示如何为一个键创建唯一索引,该索引将拒绝那些重复的键值。
collection.create_index("name") # 普通索引
collection.create_index([("age", -1)], unique=False) # 降序索引
collection.create_index("email", unique=True) # 唯一索引
# 为文档创建索引字段,为唯一值,可加快查询速度等
# 该索引会阻止我们插入用户_id 已在集合中的文档
result = collection.create_index([("user_id", pymongo.ASCENDING)], unique=True)
sorted(list(collection.index_information()))
['_id_', 'user_id_1']
# 请注意,我们现在有两个索引:一个是 MongoDB 自动创建的 _id 索引,另一个是我们刚刚创建的 user_id 索引。
user_profiles = [{"user_id": 211, "name": "Luke"}, {"user_id": 212, "name": "Ziltoid"}]
new_profile = {"user_id": 213, "name": "Drew"}
duplicate_profile = {"user_id": 212, "name": "Tommy"}
result = collection.insert_one(new_profile) # This is fine.
result = collection.insert_one(duplicate_profile)
Traceback (most recent call last):
DuplicateKeyError: E11000 duplicate key error index: test_database.profiles.$user_id_1 dup key: { : 212 }