我需要为文档中的多个字段创建唯一索引。我只想允许例如的唯一条目。基于联系人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到上述标识符创建索引的正确方法是什么?