Doctrine MongoDB ODM: как получить версию bin_md5 @Id

С Doctrine ODM (MongoDB) можно использовать аннотацию Doctrine\ODM\MongoDB\Mapping\Annotations\Id для установки идентификатора документа.

Поскольку я хочу использовать хеш в качестве идентификатора, я установил свой документ следующим образом:

class WebResource
{
    /**
     * @ODM\Id(strategy = "NONE", type = "bin_md5")
     *
     * @var string
     */
    private $hash;
    ...
}

Эта конфигурация преобразует хэш типа 774a0f33ede410cde2d785e2d9e52561 в _id: 'Nzc0YTBmMzNlZGU0MTBjZGUyZDc4NWUyZDllNTI1NjE='.

Теперь, когда я получаю $hash из документа, я получаю значение 774a0f33ede410cde2d785e2d9e52561.

Это делает невозможным использование такого запроса в MongoDB Compass:

{"_id": "774a0f33ede410cde2d785e2d9e52561"}

Фактически, этот запрос всегда не возвращает никакого значения, так как фактический идентификатор — Nzc0YTBmMzNlZGU0MTBjZGUyZDc4NWUyZDllNTI1NjE=.

Как найти документ по его ID, имея не преобразованным только его хэш?

Я пробовал много подходов:

  1. Использование функции md5() php;
  2. Использование (new Binary($resource->getHash(), Binary::TYPE_MD5))->getData()
  3. Использование new \MongoBinData($resource->getHash(), \MongoBinData::MD5)

Ни одна из этих попыток не работает.

Есть идеи?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Nzc0YTBmMzNlZGU0MTBjZGUyZDc4NWUyZDllNTI1NjE= просто закодирован в base64 774a0f33ede410cde2d785e2d9e52561

echo -n '774a0f33ede410cde2d785e2d9e52561' | base64

и использовать результат в compas

Так просто... Спасибо!

Aerendir 10.04.2019 13:22

Другие вопросы по теме