创建索引
索引支持在 MongoDB 中高效执行查询。如果应用程序在相同字段上重复运行查询,则可以在这些字段上创建索引以提高查询的性能。
如要创建索引,请使用 createIndex()
Shell 方法或适用于您的驱动程序的等效方法。本页显示 MongoDB Shell 和驱动程序的示例。
关于此任务
在 MongoDB Shell 或驱动程序中运行创建索引的命令时,MongoDB 仅在没有相同规格索引存在时才创建索引。
尽管索引可提高查询性能,但添加索引会对写入操作的性能产生负面影响。对于具有高写入读取比率的集合,索引的成本很高,因为每次插入和更新还必须更新所有索引。
步骤
➤ 如要设置此页面上示例的语言,请使用右侧导航窗格中的选择您的语言下拉菜单。
要在 mongosh
中创建索引,请使用 db.collection.createIndex()
。
db.collection.createIndex( <key and index type specification>, <options> )
要使用 .NET 驱动程序 创建索引,请使用 MongoCollection.CreateIndex。
collection.CreateIndex( IndexKeys<collection>.<key and index type specification>, <options> );
要使用 Async Java 驱动程序 创建索引,请使用 com.mongodb.async.client.MongoCollection.createIndex 。
collection.createIndex( <key and index type specification>, <options>, <callbackFunction>)
要使用 Java 驱动程序创建索引,请使用 com.mongodb.client.MongoCollection.createIndex。
collection.createIndex( <key and index type specification>, <options> )å
要使用Motor driver 创建索引,请使用motor.motor_asyncio.AsyncIOMotorCollection.create_index
。
await db.collection.create_index([(<key and index type specification>)], <options> )
如要使用 Node.JS 驱动程序创建索引,请使用 createIndex()
。
collection.createIndex( { <key and index type specification> }, function(err, result) { console.log(result); callback(result); }
要使用 Perl 驱动程序创建索引,请使用 create_one()。
my $indexes = $db->get_collection( <collection> )->indexes; $indexes->create_one( [ <key and index type specification> ] );
如要使用 PHP 驱动程序创建索引,请使用 MongoDB\\Collection::createIndex()
。
$collection->createIndex(<key and index type specification>, <options>);
要使用 Python 驱动程序创建索引,请使用 pymongo.collection.Collection.create_index方法:
db.collection.create_index([(<key and index type specification>)], <options> )
要使用 Ruby 驱动程序创建索引,请使用 Mongo:: Index:: View #create_one。
client[:collection].indexes.create_one({ <key and index type specification> }, {options})
要使用 Scala 驱动程序创建索引,请使用 org.mongodb.scala.model.Indexes
collection.createIndex(<key and index type specification>)
例子
此示例会在 name
字段上创建一个单键降序索引:
db.collection.createIndex( { name: -1 } )
此示例会在 name
字段上创建一个单键降序索引:
collection.CreateIndex( IndexKeys<collection>.Descending("name") );
此示例会在 name
字段上创建一个单键降序索引:
collection.createIndex(Indexes.descending("name"), someCallbackFunction());
此示例会在 name
字段上创建一个单键降序索引:
collection.createIndex(Indexes.descending("name"));
此示例会在 name
字段上创建一个单键降序索引:
await collection.create_index([("name", pymongo.DESCENDING)])
此示例会在 name
字段上创建一个单键降序索引:
collection.createIndex( { name : -1 }, function(err, result) { console.log(result); callback(result); }
此示例会在 name
字段上创建一个单键降序索引:
my $indexes = $db->get_collection( <collection> )->indexes; $indexes->create_one( [ name => -1 ] );
此示例会在 name
字段上创建一个单键降序索引:
$collection->createIndex(['name' => -1]);
此示例会在 name
字段上创建一个单键降序索引:
collection.create_index([("name", pymongo.DESCENDING)])
此示例会在 name
字段上创建一个单键降序索引:
client[:collection].indexes.create_one({ name: -1 })
此示例会在 name
字段上创建一个单键降序索引:
collection.createIndex(descending("name"))
注意
索引排序顺序
使用降序单字段索引可能会对索引性能产生负面影响。为获得最佳性能,请仅使用升序单字段索引。
结果
若要确认索引已创建,请使用 mongosh
运行 db.collection.getIndexes()
方法:
db.collection.getIndexes()
输出:
[ { v: 2, key: { _id: 1 }, name: '_id_' }, { v: 2, key: { name: -1 }, name: 'name_-1' } ]
如需了解使用驱动程序创建的索引,请参阅驱动程序的文档。