«Недопустимое имя поля BSON» во время upsert
Я пытаюсь обновить данные в коллекции Mongo, используя следующий код:
val UsersColl = "Users" val UsersColl_AuthProvider = "AuthProvider" val UsersColl_UserId = "UserId" val UsersColl_Active = "Active" val UsersColl_SlackRealName = "SlackRealName" val UsersColl_SlackTeamId = "SlackTeamId" val AuthProvider_Slack = "Slack" val Upsert = UpdateOptions().upsert(true) internal open fun slackUserToUpsertStatement(usr: SlackUserData): WriteModel<Document> { val query = BasicDBObject(UsersColl_UserId, usr.id()) val data = mapOf( UsersColl_AuthProvider to AuthProvider_Slack, UsersColl_UserId to usr.id(), UsersColl_Active to true, UsersColl_SlackRealName to usr.realName, UsersColl_SlackTeamId to usr.teamId ) val update = BasicDBObject(data) return UpdateOneModel<Document>( query, update, Upsert ) } val updates = users.map { slackUserToUpsertStatement(it) }.toList() val coll = db.getCollection(UsersColl) coll.bulkWrite(updates)
Когда выполняется upsert (последние три строки в приведенном выше коде), я получаю исключение java.lang.IllegalArgumentException: Invalid BSON field name AuthProvider
.
Как я могу это исправить?
- Querydsl - результат разделения на два или более объекта
- Spring Boot @ControllerAdvice обработчик исключений не срабатывает
- java.util.logging.Logger в тестируемом классе
- kotlin map based properties и Jackson не работают - делегируйте точки на другую карту, чтобы свойство карты
- Nashorn, передать java-объект javascript как JSON.stringified
Я не вижу никаких проблем с полем AuthProvider
(без пробелов, никаких специальных символов, таких как точки), упомянутых в ответах на подобные вопросы.
- Возможно ли портлет Kotlin Liferay?
- Kotlin не может получить доступ к kotlin.jvm.functions.Function1 при вызове функции kotlin с java lambda
- В Kotlin Как я могу преобразовать Int? к Int
- Перегрузка интерфейса
- Избавление от lateinit при конвертации Spring Java8 Junit test в Kotlin
- Можно ли использовать Котлин в Граале?
- Как сортировать Kotlin MutableList <Int>
- Как реализовать шаблон проектирования шаблонов в Котлине?
Замена
return UpdateOneModel<Document>( query, update, Upsert )
от
return ReplaceOneModel<Document>(query, Document(data), Upsert)
исправлена проблема.