索引

对单一键建立索引

db.collection.createindex(
    {name: 1}
)

在集合的同一个键上不能重复建立单一索引;若已经建立了索引,再在间一个Key 上建立索引,将给予出错提示。

1升序,-1降序


嵌套文档单字段索引

db.books.insert(
    {
        name:" <dirty cocks故事》",
        price: 30 ,
        tags: {press: "飞出版社" , call :"1820000000"}
    }
)

db.books.createIndex({"tags.press" :1})


唯一索引

db.collection.createindex(
    {name: 1},
    {unique: true} //(注意MongoDB的命令是大小写敏感的)
)

name的值必须是唯一的,不能有重复值出现;否则,MongoDB将新插入的重复文档予以拒绝。在没有指定{unique:true}参数选项的情况下,索引方法允许存在宇段值重复的多文档记录。


建立多字段索引(组合/复合索引)

//对两个字段建立索引
db.books.createindex(
    {
        price:l , color:-1
    }
)

//用sort 排序查询
db.books.find({}, {_id: 0}).sort.({price: 1, color: -1})

上述代码先用createIndex命令建立price、color多键组合索引,然后用find()查找文档记录;对查找出来的文档记录结果用sort({price: 1, color:  -1}先用做price 升序排序,在price价格一样的情况下,再对price相同记录做color降序排序


多宇段唯一索引

db.books.createindex({name: l , price: l}, {unique: true}) //是允许的

只要name 和price 组合起来的值保持唯一性


基本文本索引

db.books.createindex({narne: "text"})  //为name 建立文本索引

指定权重文本索引

db.books.createIndex(
    {
        name: "text",
        price: "text"
    },
    {
        weights: {name: 10}, //为name指定索引权重
        name: "TextIndex"    //默认情况下,price权重为1
    }
);


通配符文本索引

为指定集合中的所有字符串内容进行搜索提供通配索引,这在高度非结构化的文档里比较有用

db.books.createIndex({"$**": "text"})


哈希索引

用于支持对分片键(带哈希键值对的分片集合)的分片数据索引,主要用于分布式数据索引

db.collection_name.createIndex({_id: "hashed"})

命令说明:key为含有哈希值的键

(1.hashed 索引不支持多字段索。2.hashed会把浮点数的小数部分自动去掉,所以对浮点数字段进行索引时,要注意该特殊情况。3.hashed 不支持唯一索引)


还可以用ensureIndex()创建索引

>db.collection.ensureIndex({id: "hashed"})

MongoDB 3.0开始用createindex 命令代替ensureIndex


(1)db.collection.droplndex(index):移除集合指定的索引功能。index参数为指定需要删除的集合索引名,可用getlndexes()函数获取集合的所有索引名称。
(2)db.collection.droplndexes():移除一个集合的所有索引功能。
(3)db.collection.getlndexes():返回一个指定集合的现有索引描述信息的文档数组。
(4)db.collection.relndex():删除指定集合上所有索引,并重新构建所有现有索引。在具有大量数据集合的情况下,该操作将大量消耗服务器的运行资源,引起运行性能急剧下降等问题的发生。
(5)db.collection.totallndexSize():提供指定集合索引大小的报告信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章