2017-09-08 78 views
1

PHP中的MongoDB驅動程序的文檔(http://php.net/manual/en/mongodb-driver-cursor.toarray.php)爲例,
示例代碼如下:如何通過PHP MongoDB驅動程序將數據從mongodb導入到mysql?

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017"); 

$bulk = new MongoDB\Driver\BulkWrite; 
$bulk->insert(['x' => 1]); 
$bulk->insert(['x' => 2]); 
$bulk->insert(['x' => 3]); 
$manager->executeBulkWrite('db.collection', $bulk); 

$query = new MongoDB\Driver\Query([]); 
$cursor = $manager->executeQuery('db.collection', $query); 

var_dump($cursor->toArray()); 

問:

我想插入$cursor到MySQL,我應該怎麼對它做什麼? toArray()可以將它改成數組,但數組的元素是BSONDocument,它們不能插入mysql。

回答

1

你要遍歷您的BSON對象數組,並將它們與相同的字段插入到一個MySQL表。您可以爲此使用PDO準備語句,並使用來自每個相應BSON的值執行它。

$pdoStmt = $pdo->prepare("INSERT INTO MyTable SET x = :x"); 

foreach ($cursor->toArray() as $bson) { 
    $data = get_object_vars($bson); 
    unset($data["_id"]); 
    $pdoStmt->execute($data); 
} 

但是,這假設你的MySQL表與BSON文檔具有完全相同的字段。最好的MySQL表格設計可能與您的MongoDB文檔設計不同。這是存儲數據的兩種不同的範例。

這也假定您的BSON文檔具有簡單的名稱 - 值對,其中所有值都是標量。 MySQL不支持數組或其他任何東西作爲子文檔。這也假設您的所有BSON文檔具有相同的結構,即所有文檔中的同一組命名字段。

在嘗試此操作之前,您應該瞭解關於關係數據庫設計的一些知識。

0

不使用toArrayü可以如​​下使用iterator_to_array

$resultArray = iterator_to_array($cursor); 
相關問題