Bạn cũng có thể sử dụng các đối tượng cho trường _id. Trường _id luôn là duy nhất. Bằng cách đó, bạn sẽ nhận được một khóa chính tổng hợp:
{ _id : { a : 1, b: 1} }
Chỉ cần cẩn thận khi tạo các id này rằng thứ tự các khóa (a và b trong ví dụ) quan trọng, nếu bạn hoán đổi chúng xung quanh, nó được coi là một đối tượng khác.
Khả năng khác là để _id một mình và tạo một chỉ mục kết hợp duy nhất.
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/