我有一些保存在MongoDB中的数据,我想将它们传输到MySQL。
我使用MongoDB PHP Library来做这个,我在下面编写了一个测试演示:
MongoDB PHP库文档:
https://docs.mongodb.com/php-library/master/
http://php.net/manual/en/book.mongodb.php
TestController.php
//insert some test data into mongodb
public function insertMongodb()
{
$collection = (new \MongoDB\Client)->test->articles;
$collection->insertMany([
['title' => 'hello', 'content' => 'hello...'],
['title' => 'foo', 'content' => 'foo...'],
['title' => 'bar', 'content' => 'bar...'],
]);
dd('ok');
}
//query the data from mongodb and insert them into mysql
public function queryAndInsertMysql()
{
$collection = (new \MongoDB\Client)->test->articles;
$cursor = $collection->find();
//how to write next?
}
在mysql中,有一个表articles
,它包含以下字段:
id
title
content
我想将查询结果从mongodb传输到mysql表articles
。
问题:
在第二个函数queryAndInsertMysql()
中,如何将查询形式mongodb的结果插入到mysql中?
答案 0 :(得分:1)
看起来你对如何在Laravel中插入记录感到有些困惑。您正在调用Collection上的insertMany()
方法。
我建议在应用程序中设置2个数据库连接,1个用于MongoDB,1个用于MySQL。
有关在Laravel How to use multiple database in Laravel
中创建多个数据库连接的帮助,请参阅此问题和答案然后从一个数据库中拉出并插入另一个数据库:
$articles = DB::connection('mongodb')->table('articles')->get();
DB::connection('mysql')->table('articles')->insert($articles);
如果这是一次性任务,它应该是迁移的一部分而不是控制器。