MongoDB Composite Key

2022-09-01 05:45:35

我刚刚开始使用MongoDb,我注意到我得到了很多重复的记录,这些记录是我想要独一无二的。我想知道如何对我的数据使用复合键,并且我正在寻找有关如何创建它们的信息。最后,我正在使用Java来访问mongo和morphia作为我的ORM层,所以在你的答案中包含这些会很棒。

吗啡:http://code.google.com/p/morphia/


答案 1

您也可以将对象用于_id字段。_id字段始终是唯一的。这样,您就可以获得一个复合主键:

 { _id : { a : 1, b: 1} }

在创建这些 ID 时要小心,键的顺序(示例中的 a 和 b)很重要,如果交换它们,则将其视为不同的对象。

另一种可能性是_id不谈,并创建一个唯一的复合指数

db.things.ensureIndex({firstname: 1, lastname: 1}, {unique: true});
//Deprecated since version 3.0.0, is now an alias for db.things.createIndex()

https://docs.mongodb.org/v3.0/reference/method/db.collection.ensureIndex/


答案 2

您可以在要测试一性的文档字段上创建唯一索引。它们也可以是复合的(在MongoDB土地上称为复合键索引),正如你从文档中看到的那样。Morphia确实有一个注释来支持字段级别的索引。除了 morphia 之外,您还可以使用注释在类级别定义复合键。@Indexed@Indexed