创建索引时的格式:
db.collection.ensureIndex({param},{param})
其中,第一个是索引的值,之前一直只用到了第一个,第二个参数便是索引的属性
比较重要的属性有:
名字
  db.collection.ensureIndex({},{name:''})
  在创建索引时,mongodb会自己给索引创建默认的名字,这种名字并不好记,我们看一下mongodb是怎么给自己命名的
唯一性
稀疏性
是否定时删除:比如过期索引
> db.suoyin.getIndexes()
[
{
"v" : ,
"key" : {
"_id" :
},
"name" : "_id_",
"ns" : "test.suoyin"
},
{
"v" : ,
"key" : {
"x" :
},
"name" : "x_1",
"ns" : "test.suoyin"
}
]
我们再增加一条索引y,排序方式为-1
> db.suoyin.getIndexes()
[
{
"v" : ,
"key" : {
"_id" :
},
"name" : "_id_",
"ns" : "test.suoyin"
},
{
"v" : ,
"key" : {
"x" :
},
"name" : "x_1",
"ns" : "test.suoyin"
},
{
"v" : ,
"key" : {
"y" : -
},
"name" : "y_-1",
"ns" : "test.suoyin"
}
]
可以看到name的命名方式是key值+下划线+value值
我们再创建一个复合索引
> db.suoyin.ensureIndex({x:,y:-})
再看索引
> db.suoyin.getIndexes()
[
{
"v" : ,
"key" : {
"_id" :
},
"name" : "_id_",
"ns" : "test.suoyin"
},
{
"v" : ,
"key" : {
"x" :
},
"name" : "x_1",
"ns" : "test.suoyin"
},
{
"v" : ,
"key" : {
"y" : -
},
"name" : "y_-1",
"ns" : "test.suoyin"
},
{
"v" : ,
"key" : {
"x" : ,
"y" : -
},
"name" : "x_1_y_-1",
"ns" : "test.suoyin"
}
]
可以看到,复合索引是多个key之前用下划线相隔,这种名字显得并不是很直观,如果再设置索引({x:1,y:1,z:1,m:1}),这样索引名字会特别长,不好记,另外一方面,mongodb对索引对名字有长度限制,现在对长度限制是125字节,为了避免长度超限,也避免获取索引时不能够很好的理解,所以我们可以自定义索引的名字
> db.suoyin.ensureIndex({x:,y:,z:,m:},{name:'normal_index'})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : ,
"numIndexesAfter" : ,
"ok" :
}
再次查看索引
> db.suoyin.getIndexes()
[
{
"v" : ,
"key" : {
"_id" :
},
"name" : "_id_",
"ns" : "test.suoyin"
},
{
"v" : ,
"key" : {
"x" :
},
"name" : "x_1",
"ns" : "test.suoyin"
},
{
"v" : ,
"key" : {
"y" : -
},
"name" : "y_-1",
"ns" : "test.suoyin"
},
{
"v" : ,
"key" : {
"x" : ,
"y" : -
},
"name" : "x_1_y_-1",
"ns" : "test.suoyin"
},
{
"v" : ,
"key" : {
"x" : ,
"y" : ,
"z" : ,
"m" :
},
"name" : "normal_index",
"ns" : "test.suoyin"
}
]
可以看到最后一个名字已经指定为normal_index,这不仅让人容易理解,而且在删除索引时,也可以使用名字作为参数
> db.suoyin.dropIndex('normal_index')
{ "nIndexesWas" : , "ok" : }
相比较指定x_1_y_-1_z_1,使用名字来代替是比较方便的一种方法
> db.suoyin.getIndexes()
[
{
"v" : ,
"key" : {
"_id" :
},
"name" : "_id_",
"ns" : "test.suoyin"
}
]

索引属性 name指定的更多相关文章

  1. 索引属性 unique指定

    比较重要的属性有: 名字 db.collection.ensureIndex({},{name:''}) 在创建索引时,mongodb会自己给索引创建默认的名字,这种名字并不好记,我们看一下mongo ...

  2. 攻城狮在路上(壹) Hibernate(三)--- 属性访问、命名策略、派生属性、指定包名等

    一.hibernate访问持久化类属性的策略: 在<property>元素中的access属性用于指定Hibernate访问持久化类属性的方式. 常见的方式如下: 1.property:默 ...

  3. box-sizing属性(指定针对元素的宽度与高度的计算方法)

    在css中,使用width属性与height属性来指定元素的宽度与高度.使用box-sizing属性,可以指定用width属性与height属性分别指定的宽度值与高度值是否包含元素的内部补白区域与边框 ...

  4. 利用pandas选取某个属性符合指定条件的所有行

    最近遇到利用pandas选取指定行的需求,经常忘记,在此做下记录 选取某个属性等于特定值的所有行记录 df[(df[‘column_name’] == target_value)] 注:等于用 '== ...

  5. arcpy显示指定表的索引属性

    import arcpy feature_class = "c:/data/well.shp" # Create a list of indexes using the ListI ...

  6. Spring对外部属性文件指定的某个属性进行加密、解密

    [From] http://blog.csdn.net/ethanq/article/details/7333897 在我们开发当中,经常会用到spring框架来读取属性文件的属性值,然后使用占位符引 ...

  7. html -- contenteditable 属性:指定元素内容是否可编辑

    所有主流浏览器都支持 contenteditable 属性 定义和用法 contenteditable 属性指定元素内容是否可编辑. 注意: 当元素中没有设置 contenteditable 属性时, ...

  8. Java属性中指定Json的属性名称

    只需要使用注解"@JsonProperty(value = "pwd")" import com.fasterxml.jackson.annotation.Js ...

  9. 正则去除html标签属性保留指定标签

    /// <summary> /// 去除标签里面的属性保留IMG标签属性 /// </summary> /// <param name="strText&quo ...

随机推荐

  1. uva 1614奇怪的股市(归纳法证明,贪心)

    uva 1614奇怪的股市(归纳法证明,贪心) 输入一个长度为n的序列a,满足\(1\le a_i\le i\),要求确定每个数的正负号,使得所有数的总和为0.例如a={1, 2, 3, 4},则4个 ...

  2. [Xcode 实际操作]三、视图控制器-(7)UINavigationController自定义导航按钮

    目录:[Swift]Xcode实际操作 本文将演示设置导航按钮的样式,以及设置导航标题区域的样式. import UIKit class FirstSubViewController: UIViewC ...

  3. Python 软件热更新

    Python 软件热更新 本篇文章涉及技术知识如下: Redis threading 多线程 PyQt5 importlib 热更新 场景 咱们在平时运行一些长时间都会一直运行的软件(如:某些云同步软 ...

  4. 10分钟了解什么是BFC

    BFC对于已经是一个耳熟能详的词汇了,而且在前端面试中,这题也是一个高频题.虽然我们平时在开发的时候知道如何利用BFC来解决问题,但是我们要具体说出BFC的概念和怎么触发BFC,我相信很多小伙伴也是和 ...

  5. winform中的Datagridview控件与List同步修改

    Winform的datagridview是个很强大的控件,可用datatable, List等型的数据与之绑定显示. 可惜的是,绑定的LIst不能同步更新. 估计是为了改进List不能同步更新的问题, ...

  6. Unity 行为树-节点间数据传递

    一.引言 有以下小场景: 节点A:发现了 敌人. 节点B:追逐敌人. 对于同一个敌人物体,节点AB之间是如何传递数据 的呢? 二.数据传递的3种方式 1.共享变量:面板中创建局部或者全局的共享变量Te ...

  7. POJ 2318 TOYS 利用叉积判断点在线段的那一侧

    题意:给定n(<=5000)条线段,把一个矩阵分成了n+1分了,有m个玩具,放在为位置是(x,y).现在要问第几个位置上有多少个玩具. 思路:叉积,线段p1p2,记玩具为p0,那么如果(p1p2 ...

  8. 性能测试学习第九天_脚本编写以及controller场景

    创建java脚本 环境配置: 安装jdk(lr11最高支持java1.6) 配置环境变量 在lr选择java Vuser协议 脚本结构: 一般在init中编写初始化脚本,在action中编写业务流程, ...

  9. vnc安装问题

    在xenserver中安装vncserver软件.启动显示正常 用grep命令查看也确实有线程在运行. 但实际上用命令service vncserver status查看vnc状态,显示没有桌面在运行 ...

  10. ADO学习笔记之注入漏洞与参数化查询

    ADO学习笔记之注入漏洞与参数化查询 作为新手,在学习ADO程序时,使用 sql 语言查询数据时,很容易写类似如下代码: using (SqlConnection con = new SqlConne ...