先给用户集合插入两条记录,然后用用户集合来进行索引管理的演示:
<代码>比;user1={“名称”:“李明”,“年龄”:20,“性别”:“F”} {" name ":“李明”、“年龄”:20,“性别”:“F”} 比;db.users.insert (user1) WriteResult ({“nInserted”: 1}) 比;user2={“名称”:“zhangsan”,“年龄”:25岁的“性别”:“F”} {" name ": " zhangsan”、“年龄”:25岁的“性别”:“F”} 比;db.users.insert (user1) WriteResult ({“nInserted”: 1}) 比;db.users.count () 2 代码>
创建索引:
mongodb使用方法createIndex()和ensureIndex()方法来创建索引,前者用于3.0及以上版本,后者用于3.0以下版本。
语法:
db.COLLECTION_NAME.ensureIndex(键[选项])
键:要建立索引的参数列表。如:{关键:1},其中关键表示字段名,1表示升序排序,也可使用使用数字1降序。
选项:可选参数,表示建立索引的设置。可选值如下:
背景,布尔,在后台建立索引,以便建立索引时不阻止其他数据库活动。默认值为假的。
独特,布尔,创建唯一索引。默认值false。
名称字符串,指定索引的名称。如果未指定,mongodb会生成一个索引字段的名称和排序顺序串联。
partialFilterExpression文档。如果指定,mongodb只会给满足过滤表达式的记录建立索引。
稀疏,布尔,对文档中不存在的字段数据不启用索引。默认值是错误的。
expireAfterSeconds,整数,指定索引的过期时间
storageEngine,文档,允许用户配置索引的存储引擎
<代码>比;db.users.createIndex ({" name ": 1}) { “createdCollectionAutomatically”:假的, “numIndexesBefore”: 1、 “numIndexesAfter”: 2 “ok”: 1 }代码>
例2:给名字字段创建倒序索引
<代码>比;db.users.createIndex ({" name ": 1}) { “createdCollectionAutomatically”:假的, “numIndexesBefore”: 2 “numIndexesAfter”: 3, “ok”: 1 }代码>
例3:给姓名、年龄字段创建组合索引
<代码>比;db.users.createIndex({“名称”:1、“年龄”:1}) { “createdCollectionAutomatically”:假的, “numIndexesBefore”: 3, “numIndexesAfter”: 4 “ok”: 1 }代码>
例4:在后台给年龄字段创建索引
<代码>比;db.users.createIndex({年龄:1}、{背景:1}) { “createdCollectionAutomatically”:假的, “numIndexesBefore”: 4 “numIndexesAfter”: 5 “ok”: 1 }代码>
在后台创建索引的原因:
在前台创建索引期间会锁定数据库,会导致其它操作无法进行数据读写,在后台创建索引是,会定期释放写锁,从而保证其它操作的运行,但是后台操作会在耗时更长,尤其是在频繁进行写入的服务器上。
查看索引:
MongoDB提供的查看索引信息的方法:
getIndexes()方法可以用来查看集合的所有索引,
getIndexKeys()方法查看索引键。
totalIndexSize()查看集合索引的总大小,
getIndexSpecs()方法查看集合各索引的详细信息
例1:getIndexes()的用法
<代码>比;db.users.getIndexes () ( { “v”: 1、 “关键”:{ “_id”: 1 }, “名称”:“_id_”, “ns”:“test1.users” }, { “v”: 1、 “关键”:{ “名称”:1 }, “名称”:“name_1”, “ns”:“test1.users” }, { “v”: 1、 “关键”:{ “名称”:1 }, “名称”:“name_-1”, “ns”:“test1.users” }, { “v”: 1、 “关键”:{ “名称”:1、 “年龄”:1 }, “名称”:“name_1_age_1”, “ns”:“test1.users” }, { “v”: 1、 “关键”:{ “年龄”:1 }, “名称”:“age_1”, “ns”:“test1.users”, “背景”:1 } )代码>
例2:getIndexKeys()的用法
<代码>比;db.users.getIndexKeys () ( { “_id”: 1 }, { “名称”:1 }, { “名称”:1 }, { “名称”:1、 “年龄”:1 }, { “年龄”:1 } )代码>
例3:totalIndexSize()的用法
<代码>比;db.users.totalIndexSize () 81920年代码>
例4:getIndexSpecs()的用法
MongoDB索引管理——创建索引,查看索引,删除索引,重建