三:ORM框架Morphia的学习-索引的创建

直接上代码

@Entity
public class Product {

    @Id
    private ObjectId id;

    @Indexed(value=IndexDirection.ASC, name="upc", unique=true, dropDups=true) 
    private String upcSymbol;
...
}

看到了吗?就是看这个啦。

@Indexed(value=IndexDirection.ASC, name="upc", unique=true, dropDups=true) 


参数说明:

   value: 索引的方向。 IndexDirection.ASC(升序),IndexDirection.DESC(降序), IndexDirection.BOTH(两者) ,默认为 升序;

   name: 被创建的索引的 名称。 mongodb默认创建的名称格式为:key1_1/-1_key2_1/-1...

   unique: 是否唯一索引。true:为唯一索引;false:不是唯一索引。默认为:false

   dropDups:当某个字段创建唯一索引时,删除其他相同值的记录,只保留第一条记录。true:删除重复。false:不删除重复,但是如果有重复值时,唯一索引创建失败;默认为false.

 

想创建复合索引?直接上代码

@Entity
@Indexes(@Index(name = "a_b", value = "a, -b"))
public class TestClass
{
    @Property("a")
    private int fieldA;
    @Property("b")
    private int fieldB;
    //how to annotate index of compound key fieldA and fieldB using morphia index annotation?
}
a,就是按升序排列,-b,就是降序排列。( 这个复合索引。。。吗啡的wiki竟然没写。。。。)



向Morphia注册你的实体类,再调用 Datastore.ensureIndexes() 使你的索引生效。

        当在系统上,重复做这个操作,不会耗费时间,也不会做任何事情。

Morphia m = ...
Datastore ds = ...

m.map(Product.class);
ds.ensureIndexes(); //creates all defined with @Indexed

你可能感兴趣的:(数据库)