Description:
See the design or the tests for details - in order to use a uniqueKey other than the default you have to be sure there is a compatible unique index. 'compatible' is a bit complicated to define, so I won't attempt to do it again in this box.
Engineering Ticket Description:
This is just the unsharded piece of SERVER-36047, which we can split off because it won't depend on support for $out to a sharded collection in the same way.
As part of this ticket we should verify that:
- An index exists with some combination of the fields from the uniqueKey. The order of the uniqueKey fields shouldn't matter here, so if my uniqueKey was {a: 1, b: 1} an index on {b: 1, a: 1} should suffice.
- That index is unique.
- That index is not partial.
- That index is compatible with the operation's collation.