首页 > 解决方案 > MongoDB唯一索引允许重复

问题描述

我是 mongoDb 的新手,我对 mongock 有疑问。以前我有一个由注释定义的索引,如下所示。在我的单元测试中,我有一个案例试图在同一个字段上保存相同的值,它会按预期抛出异常。

@Indexed(unique = true)
private String name;

我删除了 @Indexed 注释,并通过 mongock 迁移创建了索引。但是这次我可以为该列插入具有相同值的记录而不会出现异常。那么这里有什么问题以及为什么它不能像上面那样工作。我将我的迁移创建为:

collection.createIndex(
                    new Document(new ImmutableMap.Builder<String, Object>()
                            .put("name", 1)
                            .build()),
                    new IndexOptions().name("name_idx").unique(true),
               );

标签: mongodbmongodb-query

解决方案


如果不提供有关您正在使用的版本的信息,很难说。

但是我相信您的问题可能与旧的现有错误有关。

请使用最后一个版本 4.0.8.alpha,它是 alpha,因为功能还在添加中,但是非常稳定(还没有官方文档,但是你可以在这里看到示例项目)或最后一个官方稳定版本:3.3。 2.

请注意,在这两种情况下,您都应该使用 MongockTemplate,而不是 MongoTemplate。

我相信这会解决你的问题。否则,请提供版本和堆栈跟踪。


推荐阅读