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