Laravel:如何将从MongoDB查询的结果插入到MySQL中?

时间:2017-09-03 17:46:28

标签: php mysql mongodb laravel

我有一些保存在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中?

1 个答案:

答案 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);

如果这是一次性任务,它应该是迁移的一部分而不是控制器。