BSON和JSON都是常用的數(shù)據(jù)交互格式,它們在一些方面有明顯的區(qū)別。
{ "name": "Tom", "age": 18, "address": { "city": "Shanghai", "country": "China" } }
{ "name": "Tom", "age": {"$numberInt": "18"}, "address": { "city": "Shanghai", "country": "China" } }
首先,BSON是Binary JSON的縮寫,是JSON的二進(jìn)制形式,相對于文本形式的JSON更加高效。在網(wǎng)絡(luò)傳輸和CPU解析上都比JSON快。
其次,在BSON中,數(shù)字類型分得更加精細(xì)。MongoDB中,BSON支持32位整數(shù)、64位整數(shù)、雙精度浮點(diǎn)、Decimal128及Date等多種類型。同時(shí),BSON支持JavaScript的ObjectId類型,方便MongoDB中文檔之間的關(guān)聯(lián)。
此外,BSON還支持對二進(jìn)制數(shù)據(jù)和正則表達(dá)式的支持。在某些場景中,這樣的支持非常方便。
雖然BSON在某些方面更加高效、豐富,但是由于目前只有MongoDB等部分?jǐn)?shù)據(jù)庫支持BSON格式,所以在一些場景下,JSON仍然是更好的選擇。