Fast scan-ability . For very large JSON documents, scanning can be slow. To skip a nested document or array we have to scan through the intervening field completely. In addition as we go we must count nestings of braces, brackets, and quotation marks. In BSON, the size of these elements is at the beginning of the field's value, which makes skipping an element easy. Easy manipulation . We want to be able to modify information within a document efficiently. Additional data types . JSON is potentially a great interchange format, but it would be nice to have a a few more data types. Most importantly is the addition of a "byte array" data type. This avoids any need to do base64 encoding, which is awkward.
via NoSQL databases