1. Slightly off error message:
{ "query" : { }, "update" : { "$set" : { "$foo" : 1 } }, "err" : "$foo is not valid for storage." } { "query" : {}, "update" : { "$set" : {"a.$foo" : 2} }, "err" : "$foo is not valid for storage."
Suggest change to
"DollarPrefixedFieldName: $foo is not a valid field name"
I would prefer "a.$foo" instead of "$foo" in the second example.