Я новичок в mongo
, используя Java Mongo Driver для подключения и выполнения операций, связанных с db. Я прочитал о ролях в mongodb
и осознал, что в роли «dbAdmin» есть некоторые ограничения на команды, которые он запускает после проверки подлинности.Копия коллекции Mongo DB с использованием Java без Iterator для входа в DbAdmin
У меня есть задача обновить коллекцию от UnCapped to capped. Чтобы сделать это, из postupflow posts, я прочитал, чтобы скопировать коллекцию в temp, удалить старый и переименовать эту 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-Driver: 3.2.2
Можете ли вы добавить stacktrace в сообщение? – Veeram
Сбой команды с ошибкой 13: 'не разрешено myDb выполнять команду {convertToCapped: \ "testCapped \", размер: 120}' на сервере 127.0.0.1:27017. Полный ответ: {\ "ok \": 0.0, \ "errmsg \": \ "не авторизовано в nov14Db для выполнения команды {convertToCapped: \\\" testCapped \\\ ", size: 120} \", \ " code \ ": 13}"}}} Я знаю его из-за роли ** dbAdmin ** не имеет определенных привилегий, таких как find(), copyTo(), aggregate() и т. д., но мне нужна работа .. –
Мне просто интересно, полезен ли ответ для решения проблемы? – notionquest