_idフィールドにもオブジェクトを使用できます。 _idフィールドは常に一意です。そうすれば、複合主キーを取得できます:
{ _id : { a : 1, b: 1} }
これらのIDを作成するときは、キーの順序(例ではaとb)が重要であることに注意してください。キーを入れ替えると、別のオブジェクトと見なされます。
もう1つの可能性は、_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/