„Ungültige BSON-Feld mit dem Namen“ bei einem einfachen Beispiel:

Ich versuche an einem einfachen Beispiel: Daten in eine Mongo-Sammlung mit dem folgenden code:

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)

Wenn die upsert ausgeführt wird (die letzten drei Zeilen im obigen code), bekomme ich die
Ausnahme java.lang.IllegalArgumentException: Invalid BSON field name AuthProvider.

Wie kann ich dieses Problem beheben?

Sehe ich keine problem mit dem Feld AuthProvider (keine Leerzeichen, keine Sonderzeichen wie Punkte) erwähnt in Antworten auf ähnliche Fragen stellen.

InformationsquelleAutor DP_ | 2017-08-24



One Reply
  1. 2

    Ersetzen

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

    durch

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

    das problem behoben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.