What does the "0" mean in MongoDB's BinData(0, "e8MEnzZoFyMmD7WSHdNrFJyEk8M=")?

Thilo picture Thilo · Feb 18, 2012 · Viewed 19.3k times · Source

The MongoDB shell prints binary data as a Base64-encoded string wrapped in what looks like a function call:

"_id" : BinData(0,"e8MEnzZoFyMmD7WSHdNrFJyEk8M=")

What does the "0" mean?

Answer

user1027503 picture user1027503 · Feb 18, 2012

http://docs.mongodb.org/manual/reference/mongodb-extended-json/#binary

The BSON BinData datatype is represented via class BinData in the shell. Run help misc for more information.

> new BinData(2, "1234")
BinData(2,"1234")

from the shell

help misc
b = new BinData(subtype,base64str)  create a BSON BinData value

The 0 in your case is the BSON subtype

http://bsonspec.org/#/specification

binary  ::=   int32 subtype (byte*)   Binary - The int32 is the number of bytes in the (byte*).
subtype ::=   "\x00"  Generic binary subtype
  |   "\x01"  Function
  |   "\x02"  Binary (Old)
  |   "\x03"  UUID (Old)
  |   "\x04"  UUID
  |   "\x05"  MD5
  |   "\x80"  User defined

Similar question on this thread

http://groups.google.com/group/mongodb-dev/browse_thread/thread/1965aa234aa3ef1e