Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在yii2中重命名mongodb集合_Php_Mongodb_Yii2 - Fatal编程技术网

Php 在yii2中重命名mongodb集合

Php 在yii2中重命名mongodb集合,php,mongodb,yii2,Php,Mongodb,Yii2,我正在尝试重命名yii应用程序中的mongodb集合,无论它是否抛出错误: 异常“yii\mongodb\Exception”,消息“renameCollection可能会” 只能针对管理数据库运行。” 因此,我添加了完整的名称空间,但仍然没有成功 $command = Yii::$app->mongodb->createCommand([ 'renameCollection' => MONGODB_DATABASE . '.inter

我正在尝试重命名yii应用程序中的mongodb集合,无论它是否抛出错误:

异常“yii\mongodb\Exception”,消息“renameCollection可能会” 只能针对管理数据库运行。”

因此,我添加了完整的名称空间,但仍然没有成功

 $command = Yii::$app->mongodb->createCommand([
                    'renameCollection' => MONGODB_DATABASE . '.interim_product',
                    'to' => MONGODB_DATABASE . '.temp_interim_product'
                ]);

该错误的意思正是它所说的,因为该命令必须针对
admin
数据库命名空间运行。幸运的是,该方法支持在第二个选项中提供一个数据库名称空间来执行

仅出于示例目的对名称空间进行硬编码,但假定您的目标数据库被称为
test
,那么带有“dot”
的完全限定名将是:

Yii::$app->createCommand(
  [ 'renameCollection' => 'test.interim_product', 'to' => 'test.temp_interim_product' ]
  'admin'
)
因此,真正需要做的就是“完全限定”集合的名称,无论是源名称还是目标名称,并指定
admin
数据库作为实际执行命令的名称空间


还请注意,连接的用户帐户必须具有足够的权限才能实际重命名集合。作为一个典型的角色

Thank you@Neil,缺少了“admin”这一点。工作代码如下:``yi::$app->mongodb->createCommand(['renameCollection'=>mongodb_数据库。'.middial_product','to'=>mongodb_数据库。'.temp_-middial_-product','dropTarget'=>true,],'admin')->execute()```