Intereting Posts
Listview: плавный свиток вниз Как использовать VectorDrawable в Android <selector> Gradle KTS. Как переместить конфигурацию зависимостей в отдельный файл из основной сборки? только классы разрешены в левой части литерала класса Лямбда-тип с переменным числом аргументов в Котлине? Кинжал 2 Именован не может быть предоставлен без метода @Provides Инициализация массивов в котлине Что произошло при запуске кода HashMap (it)? Как передать двоичный массив в качестве аргумента функции в Котлине Kotlin Невозможно создать поле @Autowired в классе, которое аннотируется с @Configuration @EnableWebMvc Kotlin .removeSurrounding не работает, чтобы удалить строку aws ARN Android Apk выходит из строя после подписания встроенного – Proguard уже выключен Плохой тип в стеке операндов с сопрограммами Kotlin Является ли хорошей практикой использовать @Inject для Android Fragment на Dagger2? Как решить: «ошибка: не удается найти класс символов …» после преобразования класса Java в Kotlin?

«Недопустимое имя поля 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 .

Как я могу это исправить?

Я не вижу никаких проблем с полем AuthProvider (без пробелов, никаких специальных символов, таких как точки), упомянутых в ответах на подобные вопросы.

Замена

 return UpdateOneModel<Document>( query, update, Upsert ) 

от

 return ReplaceOneModel<Document>(query, Document(data), Upsert) 

исправлена ​​проблема.