Objekty můžete použít i pro pole _id. Pole _id je vždy jedinečné. Tímto způsobem získáte složený primární klíč:
{ _id : { a : 1, b: 1} }
Při vytváření těchto id buďte opatrní, že na pořadí klíčů (v příkladu aab) záleží, pokud je prohodíte, bude to považováno za jiný objekt.
Další možností je nechat _id na pokoji a vytvořit jedinečný složený index.
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/