Skip to content

Instantly share code, notes, and snippets.

@vesse
Last active April 2, 2018 19:38
Show Gist options
  • Save vesse/bbaa40a009336c202203 to your computer and use it in GitHub Desktop.
Save vesse/bbaa40a009336c202203 to your computer and use it in GitHub Desktop.
Mongo binary UUID to Java legacy string and vice versa
{Binary} = require 'mongodb'
# Put together following https://github.com/mongodb/mongo-csharp-driver/blob/master/uuidhelpers.js
module.exports.toJUUID = toJUUID = (binId) ->
return "" unless binId?.buffer?
hex = binId.buffer.toString 'hex'
msb = hex.substr(0, 16)
lsb = hex.substr(16, 16)
msb = msb.substr(14, 2) + msb.substr(12, 2) + msb.substr(10, 2) + msb.substr(8, 2) + msb.substr(6, 2) + msb.substr(4, 2) + msb.substr(2, 2) + msb.substr(0, 2)
lsb = lsb.substr(14, 2) + lsb.substr(12, 2) + lsb.substr(10, 2) + lsb.substr(8, 2) + lsb.substr(6, 2) + lsb.substr(4, 2) + lsb.substr(2, 2) + lsb.substr(0, 2)
hex = msb + lsb
hex.substr(0, 8) + '-' +
hex.substr(8, 4) + '-' +
hex.substr(12, 4) + '-' +
hex.substr(16, 4) + '-' +
hex.substr(20, 12)
module.exports.toBinData = toBinData = (uuid) ->
hex = uuid.replace /[{}-]/g, ""
msb = hex.substr(0, 16);
lsb = hex.substr(16, 16);
msb = msb.substr(14, 2) + msb.substr(12, 2) + msb.substr(10, 2) + msb.substr(8, 2) + msb.substr(6, 2) + msb.substr(4, 2) + msb.substr(2, 2) + msb.substr(0, 2);
lsb = lsb.substr(14, 2) + lsb.substr(12, 2) + lsb.substr(10, 2) + lsb.substr(8, 2) + lsb.substr(6, 2) + lsb.substr(4, 2) + lsb.substr(2, 2) + lsb.substr(0, 2);
hex = msb + lsb;
new Binary new Buffer(hex, 'hex'), Binary.SUBTYPE_UUID_OLD
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment