重命名mongodb集合时出现未经授权的错误

重命名mongodb集合时出现未经授权的错误,mongodb,mongodb-java,mongohq,Mongodb,Mongodb Java,Mongohq,我正在使用mongohq沙盒计划。在命令提示符中 db["oldCollectionName"].renameCollection("newCollectionName", true) 无需使用管理数据库即可正常工作 但是,当我在Java中执行此操作时,出现了“未经授权”异常: oldCollection.rename(newCollectionName); 因为我使用的是mongohq沙盒计划,所以我没有访问管理数据库的权限。有没有一种方法可以在不创建新集合、复制所有文档和删除旧集合的情况

我正在使用mongohq沙盒计划。在命令提示符中

db["oldCollectionName"].renameCollection("newCollectionName", true)
无需使用管理数据库即可正常工作

但是,当我在Java中执行此操作时,出现了“未经授权”异常:

oldCollection.rename(newCollectionName);

因为我使用的是mongohq沙盒计划,所以我没有访问管理数据库的权限。有没有一种方法可以在不创建新集合、复制所有文档和删除旧集合的情况下重命名此集合?

在Java中,使用Jongo可以执行以下操作:

MongoCollection col = new Jongo(DbConfigurer.getDB()).getCollection("CODE");
col.getDBCollection().rename("CODE45", true);
我刚刚测试过,它可以工作

现在在以下示例中使用“runCommand”(与使用db.command相同):

DB db = ....getDB();
Jongo jongo = new Jongo(db);
jongo.runCommand("{ renameCollection : 'OLD_NAME', to: 'NEW_NAME', dropTarget: true}");
我得到了与你相同的错误

我阅读了一些文档,您必须先连接到admin数据库才能处理一些不允许的命令,因此我使用“admin”db执行了相同的操作,并获得以下错误堆栈:

{ "serverUsed" : "localhost/127.0.0.1:27017" , 
"errmsg" : "exception: invalid collection name: NEW_NAME" , "code" : 15967 , "ok" : 0.0}

奇怪有如此不同的行为…

我希望你不要经常这样做。在这种情况下,为什么不使用annotation@Document(collection=“NAME\u OF\u YOUR\u NEW\u collection”)重命名数据模型呢。这应该负责对集合进行重命名。我需要能够使用java代码进行重命名,因为这来自用户动态操作。因此,使用注释可能没有帮助。