Well, it’s not as if BSON is gone, it is still actually there. The Meteor MongoDB driver section is built on top of the native node driver for MongoDB and, of course, uses BSON to actually communicate with MongoDB and there is no other way, since this is the language MongoDB speaks, so to speak.
AFAIK, the EJSON point is to maintain the same type of "type validity" that BSON has inherently means when it is binary defined when translating to clients that only understand JavaScript, and therefore JSON. So first of all, browsers.
Thus, as part of Meteor’s goal to make the difference between client and server codes somewhat transparent, it needs a mechanism to maintain this “type fidelity” for Dates , ObjectId , etc. when transferring data from both the client and server.
Thus, the difference between EJSON and JSON produced by JSON includes special keys that identify these “types” so that they can be correctly processed in this way, especially when talking to a server process.
source share