sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB Java Inserting Throws org.bson.codecs.configuration.CodecConfigurationException:no se puede encontrar un códec para la clase io.github.ilkgunel.mongodb.Pojo

Por el aspecto de lo que está tratando de hacer, está tratando de agregar algún tipo de datos personalizado (en este caso, su POJO), pero lo que debe tener en cuenta es que los campos en los documentos solo pueden aceptar ciertos tipos de datos, no objetos directamente. .

En caso de que no lo supiera también, Mongo Documents está estructurado de la misma manera que json. Por lo tanto, debe crear explícitamente los documentos creando los campos e insertando los valores en ellos. Hay tipos de datos específicos que están permitidos en los campos de valor:

http://mongodb.github.io/mongo-java-driver/3.0/bson/documents/

Para ayudar con su caso, el siguiente código toma su POJO como parámetro y, conociendo la estructura del POJO, devuelve un Documento Mongo que se puede insertar en su colección:

private Document pojoToDoc(Pojo pojo){
    Document doc = new Document();

    doc.put("Name",pojo.getName());
    doc.put("Surname",pojo.getSurname());
    doc.put("id",pojo.getId());

    return doc;
} 

Esto debería funcionar para la inserción. Si desea indexar uno de los campos:

database.getCollection("Records").createIndex(new Document("id", 1));

Espero que esto responda a su pregunta y funcione para usted.