我正在尝试通过pymongo为我的mongodb集合应用索引。我正在使用
db[collection_name].ensure_index([("field_name" , "text"),("unique", 1), ("dropDups" , 1)])
它有效。但现在如何将其应用于多个领域? 像这样的东西
db[collection_name].ensure_index([("field_name1" , "text"),("field_name2", "text"),("field_name3", "text"),("unique", 1), ("dropDups" , 1)])
我知道我们可以使用db.collection.ensureIndex({"$**":"text"},{"name":"TextIndex"})
在mongo shell但我不想索引所有字段。有人可以帮帮我吗?
答案 0 :(得分:2)
>>> my_collection.create_index([("field_name1", TEXT),
... ("field_name2", TEXT),
unique=True,
dropDups=1])
请注意:
MongoDB 2.7.5或更新版本不支持
dropDups
。服务器默默忽略该选项,如果检测到重复值,使用该选项的唯一索引构建将失败。
无论如何,这将在field_name1
和field_name2
上创建compound index。
最后,请注意使用compound text indexes时存在一些限制。
答案 1 :(得分:2)
>>> from pymongo import IndexModel, ASCENDING, DESCENDING
>>> index1 = IndexModel([("hello", DESCENDING),
... ("world", ASCENDING)], name="hello_world")
pymongo的文档中提到了这一点
db[collection_name].ensure_index([("field_name1" , TEXT),("field_name2", TEXT)],name="index_name"))
这将在[field_name1,field_name2]
上提供综合索引