MongoDB:ObjectId到String

问题描述 投票:2回答:3

大家好我使用MongoDB find()方法如下:

$cursor = $collection->find();
foreach($cursor as $doc) {
   // do something....
}

没关系,但我的_id属性是自动生成的,所以当我使用上面的代码时,$ doc [_id]是Object,但我需要一个字符串。

如何自动将其转换为字符串。不是这样的:

foreach($cursor as $doc) {      
    $doc['_id'] = (string)$doc['_id'];
}
php mongodb
3个回答
2
投票

json_encode正确处理mongoid曾经是a bug in the php driver。它应该从v1.0.11开始修复。


1
投票

要从MongoDB驱动程序的任何结果自动将ObjectId转换为字符串,我使用此函数:

function convertMongoIds(array &$array){
    foreach ($array as &$element){
        if (is_array($element)){
            convertMongoIds($element);
        }else if (is_object($element) && get_class($element) == "MongoId"){
            $element = (string) $element;
        }
    }
}

0
投票
`$result = $collection->findOne([
     '_id' => new \MongoDB\BSON\ObjectId("5a59b11b3ffd3aec4a23cd2c")
]);


var_dump((string)$result->_id, $result->_id->__toString());`

两者都适用于3.6版。

reference

© www.soinside.com 2019 - 2024. All rights reserved.