[英]Doctrine MongoDB ODM: how to get the bin_md5 version of the @Id
使用Doctrine ODM(MongoDB),可以使用注釋Doctrine\\ODM\\MongoDB\\Mapping\\Annotations\\Id
來設置文檔的ID。
因為我想使用哈希作為ID,我以這種方式設置我的文檔:
class WebResource
{
/**
* @ODM\Id(strategy="NONE", type="bin_md5")
*
* @var string
*/
private $hash;
...
}
此配置將類似774a0f33ede410cde2d785e2d9e52561
的散列774a0f33ede410cde2d785e2d9e52561
為_id: 'Nzc0YTBmMzNlZGU0MTBjZGUyZDc4NWUyZDllNTI1NjE='
。
現在,當我從文檔中獲取$hash
,我得到值774a0f33ede410cde2d785e2d9e52561
。
這使得我無法在MongoDB Compass中使用這樣的查詢:
{"_id": "774a0f33ede410cde2d785e2d9e52561"}
事實上,該查詢將始終不返回任何值,因為實際ID是Nzc0YTBmMzNlZGU0MTBjZGUyZDc4NWUyZDllNTI1NjE=
。
如何通過其ID找到文檔,只有其哈希值仍未轉換?
我嘗試了很多方法:
md5()
php函數; (new Binary($resource->getHash(), Binary::TYPE_MD5))->getData()
new \\MongoBinData($resource->getHash(), \\MongoBinData::MD5)
這些嘗試中沒有任何東西似乎有效。
有任何想法嗎?
Nzc0YTBmMzNlZGU0MTBjZGUyZDc4NWUyZDllNTI1NjE=
只是base64編碼774a0f33ede410cde2d785e2d9e52561
echo -n '774a0f33ede410cde2d785e2d9e52561' | base64
並在compas中使用結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.