mongo复合索引

1、复合索引创建语法
        db.collection.createIndex( { <field1>: <type>, <field2>: <type2>, ... } )
        同创建单键(列)索引一样,索引创建时需要指定每一个键索引的顺序
        多个键直接用逗号分隔
        索引创建语法可以参考:http://blog.csdn.net/leshami/article/details/53541978

2、复合索引的一些特性
        复合索引可以支持要求匹配多个键的查询
        复合索引每一个键的顺序非常重要,这将决定该索引在查询过程中能否被使用到
        复合索引支持前导(缀)列索引查询
        不能够创建基于哈希索引类型的复合索引
        任意复合索引字段不能超过31个

在关注关系的业务场景中,经常会取消关注和关注,这个操作是很频繁的,每次关注和取消我都要相应的将库中的关系添加或删除,之前是做了删除之前先查询以及防止重复提交,后来测试阶段发现防止重复添加会使正常的关注和取关操作无法执行;然后我取消防止重复提交的话,在高并发情况下会出现重复的数据;之后考虑通过mongo的复合唯一索引来对这个去重在java 中给对应的实体类加上注解

@CompoundIndexes({
        @CompoundIndex(name = "xx名字",def = "{'xx':1,'xx':1}",unique = true)
})

然后我进行了测试,发现连续同样的五条记录插进去,中间没有报任何错误,但是库中正好只有唯一一条,刚好符合我的需求;然后接着用并行流模拟高并发情况下,也并没有出现错误;我测试的是复合唯一索引,复合索引的话就另行测试吧。

转载于:https://my.oschina.net/1107156537/blog/1802337

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值