如何使用MongoDB \ Client()库在PHP中创建MongoDB视图?

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

我正在使用以下内容:PHP 7.2 MongoDB 3.4 Pecl 1.5.2

我正在研究一个Laravel项目。它使用MongoDB作为数据库。我有很少的集合,我必须使用Laravel迁移创建Mongo Views。我想知道是否可以使用PHP创建Mongodb Views。目前我有一个解决方法。我创建了一个JavaScript文件,其中包含MongoDB db.createView()查询。它还将视图名称和集合名称作为参数。以下是我的工作。 $ db具有数据库名称,$ view具有视图名称,$ collection具有集合名称,$ script具有JavaScript文件的路径。这段代码我是在迁移类的up()方法中编写的。

$cmd = "mongo $db --eval \"var view='$view', collection='$collection'\" $script";
exec($cmd);

在我的Javascript文件中,我有类似下面的代码

db.createView(view, collection, <aggregate query>);

所以每个人都可以看到,我正在运行来自PHP的终端命令来制作视图。那么在mongo库中是否有任何PHP函数来制作mongo视图?

php mongodb view
2个回答
0
投票

你可以使用这个库mongoPhpLibrary

这将使您的工作变得轻松


0
投票

如果你在Laravel中使用mongo,我会假设你正在使用jenssegers/mongodb将它与Eloquent一起使用。

因此,假设您已将mongo数据库设置为'mongodb'数据库连接。您需要MongoDB\Database作为您的数据库。您可以通过以下方式获得:

$mongo = app('db')->connection('mongodb')->getMongoDB();

当然,如果你不使用jenssegers/mongodb,你仍然可以用mongodb/mongodb做同样的事情。

$mongo = (new MongoDB\Client)->selectDatabase($db);

这有一个名为command的方法(参见https://docs.mongodb.com/php-library/current/reference/method/MongoDBDatabase-command/),它对应于来自mongo cli的db.runCommand方法。 db.createView称这种方法(见https://docs.mongodb.com/manual/reference/method/db.createView/#db.createView

所以,你可以使用$mongo->command来创建这样的视图:

$mongo->command([
    'create' => $view,
    'viewOn' => $collection,
    'pipeline' => $aggregateQuery,
    'collation' => ['locale' => 'en'],
]);
© www.soinside.com 2019 - 2024. All rights reserved.