_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: { "a.b": 10 } }
Can see the problem if you follow this code here, here and here. This check doesn't appear to be done on non _id fields, so it's fine when we do it on the config server like this
{ min: { "a.b": 10 } }
_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.
- depends on
-
SERVER-29349 Delete shell/upgrade_check.js
- Closed
-
SERVER-29351 remove redundant use of BSONObj::storageValidEmbedded from modifier_add_to_set.cpp
- Closed
- has to be done before
-
SERVER-29333 Replace incorrect use of getStatusFromCommandResult in ShardServerCatalogCacheLoader
- Closed
- is related to
-
SERVER-24174 Inconsistent rule for storing dotted field names
- Closed
-
SERVER-6999 Embedded "dot-notation" fields broken for tag based balancing
- Closed
-
SERVER-10454 Do not store field names with "." in any metadata collections
- Closed