您的位置:首页 > 数据库 > Mongodb

关于mongodb中的索引

2016-03-14 00:00 405 查看
摘要: 其实mangodb中的索引和sql中的索引作用差不多,目的都是为了便于查询,记录了一些简单常用的索引

查看是否有索引

db.<集合名>.getIndexes();

很明显索引是在_id上面

> db.test2.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "testfind.test2"
}
]

建立索引:

在某一列上建立索引 1表示升序,-1表示降序

> db.test2.ensureIndex({num:1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.test2.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "testfind.test2"
},
{
"v" : 1,
"key" : {
"num" : 1
},
"name" : "num_1",
"ns" : "testfind.test2"
}
]

索引明显,列名_1,例如num的索引是num_1

删除索引

> db.test2.dropIndex('num_1')
{ "nIndexesWas" : 2, "ok" : 1 }
> db.test2.getIndexes() [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "testfind.test2" } ]

建立组合索引和建立一个列的索引差不错

> db.test2.ensureIndex({num:1,type:1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.test2.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "testfind.test2"
},
{
"v" : 1,
"key" : {
"num" : 1,
"type" : 1
},
"name" : "num_1_type_1",
"ns" : "testfind.test2"
}
]

删除多个索引

> db.test2.dropIndexes()
{
"nIndexesWas" : 2,
"msg" : "non-_id indexes dropped for collection",
"ok" : 1
}

建立唯一性索引

> db.test2.ensureIndex({num:1},{unique:true})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.test2.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "testfind.test2"
},
{
"v" : 1,
"unique" : true,
"key" : {
"num" : 1
},
"name" : "num_1",
"ns" : "testfind.test2"
}
]

查看索引总大小,返回的是字节数

> db.test2.totalIndexSize()
16384
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: