我是一個到mongo
的新手,使用Java Mongo驅動程序來連接和執行數據庫相關的操作。我已閱讀mongodb
中的角色並瞭解角色「dbAdmin」對獲得身份驗證後運行的命令有一些限制。複製收藏MongoDB使用Java沒有Iterator的DbAdmin登錄
我有一個任務是將的集合更新爲封閉的。要做到這一點,從stackoverflow帖子,我已閱讀將集合複製到臨時,刪除舊的,並將此temp重命名爲所需的集合。
我現在在步驟中使用dbAdmin登錄時看到一個問題:複製集合。我使用的代碼是:
MongoCursor<Document> cur = selectedCollection.find().iterator();
while (cur.hasNext()) {
Document obj = cur.next();
tempCollection.insertOne(obj);
}
上調用.iterator(),代碼拋出MongoQueryException說:「沒有被授權就MYDB執行命令{發現: 「testCapped」,過濾器: {}}」
從其他職位,我用這個代碼:
DBCursor dbCursor = mongoInstance.getDB(dbName)
.getCollection(selectedCollectionName)
.find();
while (dbCursor.hasNext()){
//
}
在這裏,在dbCursor.hasNext()
,代碼會拋出相同的錯誤。 任何替代方案?
- MongoDB的版本:3.2.10
- 蒙戈的Java驅動程序:3.2.2
你可以添加stacktrace到帖子嗎? – Veeram
命令失敗,錯誤13:'未授權在myDb上執行命令{convertToCapped:\「testCapped \」,size:120}'在服務器127.0.0.1:27017上。完整響應爲{\「ok \」:0.0,\「errmsg \」:\「nov14Db未授權執行命令{convertToCapped:\\\」testCapped \\\「,size:120} \」,\代碼\「:}}}}}} 我知道它是因爲角色** dbAdmin **沒有像find(),copyTo(),aggregate()等某些特權,但我需要一個解決方法.. –
我只是想知道答案是否有助於解決問題? – notionquest