数据库索引

优质
小牛编辑
133浏览
2023-12-01

如果不需要打开shell执行create index,直接在程序源代码里就能指定数据库索引,是不是很酷?

是的,利用bugu-mongo,你只需在程序里加上个@EnsureIndex注解,即可实现该功能。

以一个简单的新闻系统为例:

@Entity
@EnsureIndex("{type:1}")
public class News implements BuguEntity{
    @Id
    private String id;
    private String title;   //标题
    private String content;  //内容
    private String author;  //作者
    private String type;  //类别
    private int level;  //推荐级别
    private Date publishTime;  //发布时间

    ...getter and setter...
}

索引的书写规则,可以采用标准的JSON格式:

@EnsureIndex("{'type':1}")

或者简化的JSON格式:

@EnsureIndex("{type:1}")

如果有多个索引,那么这样写:

@EnsureIndex("{type:1}, {level:-1}")  //2个索引

如果是复合索引,格式如下:

@EnsureIndex("{author:1, type:1}")

还可以设置索引的属性,比如name:

@EnsureIndex("{author:1, level:-1, name:idx_author_level}")

支持unique索引:

@EnsureIndex("{macAddress:1, unique:true}")

支持地理空间索引:

@EnsureIndex("{location:2dsphere}")

支持text文本索引:

@EnsureIndex("{content:text}")

支持TTL Collection:

@EnsureIndex("{publishTime:1, expireAfterSeconds:3600}")