У меня есть объект со следующими полями:
var name: String?,
var metadata: org.bson.Document?,
var things: Map<String, MyObject> = mapOf(),
var other_things: Map<String, MyObject> = mapOf(),
@Indexed(unique = true) var hash: String?
Ключи things
и other_things
являются хешами соответствующих им MyObject
объектов.Хэши не содержат точек в них.Когда я сохраняю сущность - карты корректно сериализуются и сохраняются в mongodb.
Пример карты - взят прямо из моей консоли mongo (я замаскировал поля MyObject
...):
{
"0xa5643bf27e2786816613d3eeb0b62650200b5a98766dfcfd4428f296fb56d043": {
"field": true,
"field1": [
{
"field1field": "foo",
"field1field1": "",
"field1field2": false
}
],
"field2": "sam",
"field3": []
},
"0xfce353f601a3db60cb33e4b6ef4f91e4465eaf93c292b64fcde1bf4ba6819b6a": {
"field": true,
"field1": [
{
"field1field": "bash",
"field1field1": "",
"field1field2": true
}
],
"field2": "bar",
"field3": []
},
"0xcdcd77c0992ec5bbfc459984220f8c45084cc24d9b6efed1fae540db8de801d2": {
"field": true,
"field1": [
{
"field1field": "mash",
"field1field1": "",
"field1field2": false
}
],
"field2": "baz",
"field3": []
}
}
Однако, когда я извлекаю сущность и печатаю ключи любой карты - к каждому ключу добавляется .
, т. Е. Вывод println(entity.things.keys)
равен
[.0xa5643bf27e2786816613d3eeb0b62650200b5a98766dfcfd4428f296fb56d043, .0xfce353f601a3db60cb33e4b6ef4f91e4465eaf93c292b64fcde1bf4ba6819b6a, .0xcdcd77c0992ec5bbfc459984220f8c45084cc24d9b6efed1fae540db8de801d2]
Я незнаете, что здесь происходит, может кто-то уточнить?
NB карты были ранее Map<String, String>
, и у меня не было этой проблемы
EDIT Я изменил things
и other_things
на List<MySuperObject>
, который имеет 2 поля типа String
и MyObject
, что немного меняет структуру в mongodb (он сохраняется как массив) - фантом .
ушел - но это не отвечает на первоначальный вопрос ...