
MongoDBBSONPackedArray::toPHP로 변환된 Array는 PHP의 Array와 다르게 Array of Array 형식으로 데이터를 저장합니다.
이러한 차이로 인해 MongoDBBSONPackedArray::toPHP로 변환된 Array를 MongoDB의 Document에 저장할 때, 오류가 발생할 수 있습니다.
오류 메시지에서 Argument 1 passed to MongoDB\\BSON\\Document::set() must be of type string, array given이란 메시지는 MongoDB의 Document::set() 메소드가 string 타입의 값만 받을 수 있지만, MongoDBBSONPackedArray::toPHP로 변환된 Array는 array 타입의 값이기 때문에 오류가 발생하는 것입니다.
오류를 해결하기 위해 MongoDBBSONPackedArray::toPHP로 변환된 Array를 string 타입의 값으로 변환해야 합니다.
다음과 같은 코드를 사용할 수 있습니다.
#hostingforum.kr
php
$packedArray = MongoDBBSONPackedArray::fromPHP([
'field1' => ['value1', 'value2', 'value3'],
'field2' => ['value4', 'value5', 'value6'],
]);
$document = new MongoDBBSONDocument();
$document->set('field1', json_encode($packedArray->toPHP()));
$document->set('field2', json_encode($packedArray->toPHP()));
$collection->insertOne($document);
위 코드에서는 MongoDBBSONPackedArray::toPHP로 변환된 Array를 json_encode() 함수를 사용하여 string 타입의 값으로 변환합니다.
이러한 방법으로 오류를 해결할 수 있습니다.
2025-06-02 09:50