Mongodb 索引

MongoDB的索引跟传统数据库的索引相似,一般的如果在传统数据库中需要建立索引的字段,在MongoDB中也可以建立索引。

MongoDB中_id字段默认已经建立了索引,这个索引特殊,并且不可删除,不过Capped  Collections例外。

1.       建立索引

建立索引的函数:ensureIndex()

例子:   

>$ db.persons.ensureIndex({name:1});2.   使用索引a)       普通索引 >$ db.persons.find({name :’sam’});  // fast - uses index>$ db.persons.find({age: 3});  // slow - has to check all because 'age' isn't indexed b)   嵌入式索引 >$db.things.ensureIndex({"address.city": 1})c)       文档式索引 >$db.factories.insert( { name: "xyz", metro: { city: "New York", state: "NY" } } );>$db.factories.ensureIndex( { metro : 1 } );

1.       查看索引

>  db.VIDEO.getIndexes()
[
        {
                "name" : "_id_",
                "ns" : "ISYDB.VIDEO",
                "key" : {
                        "_id" : 1
                },
                "v" : 0
        }

2.       删除索引a)       删除所有索引 db.collection.dropIndexes();b)      删除单个索引 db.collection.dropIndex({x: 1, y: -1})c)       用运行命令的方式删除索引 // note: command was "deleteIndexes", not "dropIndexes", before MongoDB v1.3.2// remove index with key pattern {y:1} from collection foodb.runCommand({dropIndexes:'foo', index : {y:1}})// remove all indexes:db.runCommand({dropIndexes:'foo', index : '*'})
3.       重建索引 db.myCollection.reIndex()// same as:db.runCommand( { reIndex : 'myCollection' } )

这个操作是个加锁操作,并且如果集合很大,这个操作会很耗时。

注:用repair命令修复数据库的时候,会重建索引