Not all BSON types are representable in unmodified JSON, which is why we have:
Note the two types, "strict", which is RFC compliant JSON, and "shell", which in theory is parseable by the shell. "strict" is output almost everywhere, except for "bsondump", which outputs "shell" mode BSON.
The "shell" mode seems to be parseable by the shell, but at least one BSON type, "date", gets output as "Date", when "ISODate" or "new Date" is how the shell represents the actual BSON date type. This is an example of one place where the types do not correctly round trip, but there may be more.