繁体   English   中英

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

[英]How to create MongoDB views in PHP using MongoDB\Client() library?

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

我正在做一个 Laravel 项目。 它使用 MongoDB 作为数据库。 我有几个必须使用 Laravel 迁移创建 Mongo 视图的集合。 我想知道是否可以使用 PHP 创建 Mongodb 视图。 目前我有一个解决方法。 我创建了一个 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 视图?

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

因此,让我们假设您已将 mongo 数据库设置为'mongodb'数据库连接。 您的MongoDB\\Database需要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'],
]);

你可以使用这个库mongoPhpLibrary

这将使您的工作变得轻松

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM