powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: Добавление объектов в БД MongoDB
1 сообщений из 1, страница 1 из 1
Perl: Добавление объектов в БД MongoDB
    #38887545
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, что я делаю не так.
Есть БД MongoDB, в которой есть коллекция Users. В этой коллекции определены пользователи.
Выглядит документ коллекции примерно так (если смотреть с помощью Robomongo):
Код: javascript
1.
2.
3.
4.
5.
6.
7.
{
    "_id" : LUUID("3c759894-3ae3-4e4c-b480-1361a6cd1a85"),
    "userName" : "123",
    "hashPassword" : "456",
    "ownerDomainId" : LUUID("0be94575-2b88-e640-b72f-fc3ffde2b224"),
    "ownerGroupId" : LUUID("8cecc0d7-fe02-f14c-b81f-83c4ba368158")
}


В данном примере идентификатор объекта "3c759894-3ae3-4e4c-b480-1361a6cd1a85", 16-байтовый идентификатор.

Добавляю документ в коллекцию с помощью такого кода:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
my $id = (MongoDB::OID->new->to_string);
...
$colUsers->insert({'_id'=>&oid(&hex2bin($id)), 'ownerDomainId'=>&oid(&hex2bin($domain_id)), 'ownerGroupId'=>&oid(&hex2bin($group_id)), ... });

sub oid($)
{
    my $data = shift;
    my $oid = MongoDB::BSON::Binary->new('data'=>$data, 'subtype' => MongoDB::BSON::Binary->SUBTYPE_UUID_DEPRECATED);
    return $oid;
}

sub hex2bin($)
{
    my $data = shift;                                                                                                                                                                        
    return pack('H*', $data);
}


oid и hex2bin это вспомогательные функции, первая превращает байтовый массив в нужный тип данных, вторая делает их hex-дампа байтовый массив.

Этот код в принципе работает.
Но добавляемый объект в Robomongo выглядит так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
{
    "_id" : LUUID("54ec89c2-384e-e031-823c-2911"),
    "hashPassword" : "456",
    "ownerDomainId" : LUUID("5067f3f4-875c-304c-b2ef-34018d25da3a"),
    "userName" : "123",
    "ownerGroupId" : LUUID("0a44be2d-96ff-1143-924e-5d939308cbcf")
}



Идентификатор документа получается не 16-байтовый, а 12-байтовый.
Как бы это исправить?


________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: Добавление объектов в БД MongoDB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]