使用spring在mongo中创建复合唯一索引

时间:2018-08-12 16:03:22

标签: spring mongodb spring-mongodb

我需要为文档中的多个字段创建唯一索引。我只想允许例如的唯一条目。基于联系人ID的SKU。通过以下设置,mongo让我们为每个联系人插入多个相同的草图。

文档是这样构建的

@CompoundIndexes({
        @CompoundIndex(unique = true, name = "customerSku", def = "{'_id' : 1, 'items.identifiers.sku': 1}"),
        @CompoundIndex(unique = true, name = "customerEan", def = "{'_id' : 1, 'items.identifiers.ean': 1}"),
        @CompoundIndex(unique = true, name = "customerExternalId", def = "{'_id' : 1, 'items.identifiers.externalId': 1}")
})
public class Contact {
    ObjectId id;
    List<Item> items;
}

public class Item {
    ObjectId id;
    Identifiers identifiers;
    static class Identifiers {
        ObjectId id;
        String sku;
        String ean;
        String externalId;
}

目标是,不同的联系人可能具有相同的sku,ean或externalId,但每个联系人只能具有唯一的sku,ean,externalId。

我不太确定上面_id部分中的def。但是,当我将_id更改为id时如何在Contact中调用该属性时,出现一条错误消息

[BulkWriteError{index=1, code=11000, message='E11000 duplicate key error collection: contacts index: customerSku dup key: { : null, : "sku-1" }', details={ }}]

从contact.id到上述标识符创建索引的正确方法是什么?

0 个答案:

没有答案