_id fields are not allowed to have values containing dotted field names, like we're currently doing for chunk metadata collections on the shard, e.g.
_id checks on insert seem to have been introduced in v3.0 in this commit (
SERVER-12209). This is a server check. There are also more checks in the shell that prevent dotted field names, probably more generically. SERVER-12209 seems to have been in response to errors involving "$" rather than any intention to check for dotted field names.
The dotted field check originated in 1.7 via this commit
Dotted field names must be allowed on insert for shard keys. It is an inconsistency that we check for dotted field names on _id, but no other fields.