Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中从MongoDB获取UUID_Php_Mongodb_Uuid - Fatal编程技术网

在PHP中从MongoDB获取UUID

在PHP中从MongoDB获取UUID,php,mongodb,uuid,Php,Mongodb,Uuid,我在MongoDB中有一个二进制UUID,它是使用Java保存到MongoDB的。字符串格式如下所示: 9adc22fe-b775-4913-aee8-3d529ad74d5e 保存到MongoDB时,显示如下: Binary('k0HT91W0Q/mU02IsyeFttg==') 我已经使用MongoDB PHP驱动程序从集合中获取了它,给出了以下内容: object(MongoDB\BSON\Binary)#22 (2) { ["data"]=> string(16) "Iu��"

我在MongoDB中有一个二进制UUID,它是使用Java保存到MongoDB的。字符串格式如下所示:

9adc22fe-b775-4913-aee8-3d529ad74d5e
保存到MongoDB时,显示如下:

Binary('k0HT91W0Q/mU02IsyeFttg==')
我已经使用MongoDB PHP驱动程序从集合中获取了它,给出了以下内容:

object(MongoDB\BSON\Binary)#22 (2) { ["data"]=> string(16) "Iu��"ܚ]LלR=�" ["type"]=> int(3) }
我知道我可以使用
$var->getData()
提取数据,但我缺少将其恢复为上面的字符串格式的最后一个过程。我尝试过使用
base64\u decode
bin2hex
和其他一些方法,但它们返回的值不正确

如何获取存储在MongoDB中的UUID的字符串值

任何帮助都将不胜感激,
谢谢

我自己通过使用中的toJUUID方法解决了这个问题,用PHP编写如下:

$hex = bin2hex($uuid->getData());
$msb = substr($hex, 0, 16);
$lsb = substr($hex, 16, 16);
$msb = substr($msb, 14, 2) . substr($msb, 12, 2) . substr($msb, 10, 2) . substr($msb, 8, 2) . substr($msb, 6, 2) . substr($msb, 4, 2) . substr($msb, 2, 2) . substr($msb, 0, 2);
$lsb = substr($lsb, 14, 2) . substr($lsb, 12, 2) . substr($lsb, 10, 2) . substr($lsb, 8, 2) . substr($lsb, 6, 2) . substr($lsb, 4, 2) . substr($lsb, 2, 2) . substr($lsb, 0, 2);
$hex = $msb . $lsb;
$uuid = substr($hex, 0, 8) . '-' . substr($hex, 8, 4) . '-' . substr($hex, 12, 4) . '-' . substr($hex, 16, 4) . '-' . substr($hex, 20, 12);
然后,我想将Java UUID转换回BSON二进制格式(类型3),我还使用uuidhelpers.js,使用JUID方法,在PHP中如下所示:

$hex = str_replace("-", "", $uuid);

$msb = substr($hex, 0, 16);
$lsb = substr($hex, 16, 16);
$msb = substr($msb, 14, 2) . substr($msb, 12, 2) . substr($msb, 10, 2) . substr($msb, 8, 2) . substr($msb, 6, 2) . substr($msb, 4, 2) . substr($msb, 2, 2) . substr($msb, 0, 2);
$lsb = substr($lsb, 14, 2) . substr($lsb, 12, 2) . substr($lsb, 10, 2) . substr($lsb, 8, 2) . substr($lsb, 6, 2) . substr($lsb, 4, 2) . substr($lsb, 2, 2) . substr($lsb, 0, 2);
$hex = $msb . $lsb;

$uuid = hex2bin($hex);
$uuid = new MongoDB\BSON\Binary($uuid, 3);

我自己通过使用中的toJUUID方法解决了这个问题,用PHP编写如下:

$hex = bin2hex($uuid->getData());
$msb = substr($hex, 0, 16);
$lsb = substr($hex, 16, 16);
$msb = substr($msb, 14, 2) . substr($msb, 12, 2) . substr($msb, 10, 2) . substr($msb, 8, 2) . substr($msb, 6, 2) . substr($msb, 4, 2) . substr($msb, 2, 2) . substr($msb, 0, 2);
$lsb = substr($lsb, 14, 2) . substr($lsb, 12, 2) . substr($lsb, 10, 2) . substr($lsb, 8, 2) . substr($lsb, 6, 2) . substr($lsb, 4, 2) . substr($lsb, 2, 2) . substr($lsb, 0, 2);
$hex = $msb . $lsb;
$uuid = substr($hex, 0, 8) . '-' . substr($hex, 8, 4) . '-' . substr($hex, 12, 4) . '-' . substr($hex, 16, 4) . '-' . substr($hex, 20, 12);
然后,我想将Java UUID转换回BSON二进制格式(类型3),我还使用uuidhelpers.js,使用JUID方法,在PHP中如下所示:

$hex = str_replace("-", "", $uuid);

$msb = substr($hex, 0, 16);
$lsb = substr($hex, 16, 16);
$msb = substr($msb, 14, 2) . substr($msb, 12, 2) . substr($msb, 10, 2) . substr($msb, 8, 2) . substr($msb, 6, 2) . substr($msb, 4, 2) . substr($msb, 2, 2) . substr($msb, 0, 2);
$lsb = substr($lsb, 14, 2) . substr($lsb, 12, 2) . substr($lsb, 10, 2) . substr($lsb, 8, 2) . substr($lsb, 6, 2) . substr($lsb, 4, 2) . substr($lsb, 2, 2) . substr($lsb, 0, 2);
$hex = $msb . $lsb;

$uuid = hex2bin($hex);
$uuid = new MongoDB\BSON\Binary($uuid, 3);