数据库索引
优质
小牛编辑
137浏览
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}")