Как сохранить объект JsonNode в mongodb

У меня есть объект домена, который создается Джексоном из тела метода POST.

@Entity("payloads")
@Data
@NoArgsConstructor
class Payload{
    @Id
    String payloadId;

    JsonNode data;
}

Но когда я пытаюсь сохранить это в mongodb, я получаю следующую ошибку:

org.bson.codecs.configuration.CodecConfigurationException: не удается найти кодек для класса com.fasterxml.jackson.databind.node.JsonNodeFactory.

Я понимаю, что вместо использования JsonNode я мог бы создать класс для данных и либо внедрить его, либо сослаться на него в коллекции полезных нагрузок. Но моя проблема в том, что структура data является динамической, и я просто хочу сохранить данные Json в монго.

Могу ли я в любом случае достичь этого?


person Naveen Kumar    schedule 03.05.2018    source источник
comment
Если у вас есть json, вы можете напрямую использовать драйвер для его сохранения. Возможно, это более простое решение, чем использование морфия: Document d = new Document("_id", payloadId).append("data", Document.parse(jsonString)); dbCollection.insertOne(d);   -  person Franjavi    schedule 03.05.2018
comment
Коллекция Payloads. У меня есть json для одного из полей коллекции. Могу ли я встроить документ в другой документ с помощью java-драйвера.   -  person Naveen Kumar    schedule 03.05.2018
comment
Вы имеете в виду иметь что-то вроде?: {_id:xxx, data:{json}}. Это то, что вы получите в приведенном выше примере. Или вы имеете в виду что-то плоское вроде {_id:xxx, fields in the json here...} ?   -  person Franjavi    schedule 03.05.2018
comment
Это то, что вы упомянули в первую очередь. Но мой фактический документ полезной нагрузки будет содержать другие поля в дополнение к id. {_id:xxx, field1: {..}, field2: {..}, data:{json}}   -  person Naveen Kumar    schedule 03.05.2018
comment
Да, вы сможете добавить столько полей, сколько захотите: new Document("_id", payloadId).append("data", Document.parse(jsonString)).append("field1":X).append("field2":Y);   -  person Franjavi    schedule 03.05.2018
comment
Звучит полезно. Я исследую это. Спасибо!   -  person Naveen Kumar    schedule 03.05.2018
comment
Привет, я не хочу работать на уровне документа. Предположим, что этот класс на самом деле является полем в другом классе, объект которого я пытаюсь вставить. Я не могу создать документ и начать добавлять каждое поле вручную. Я использую поддержку POJO драйвера Java, но она не работает для JsonNode. Пожалуйста, взгляните на этот вопрос - заголовок stackoverflow.com/questions/50368001/   -  person Naveen Kumar    schedule 16.05.2018