MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB Java Inserting Throws org.bson.codecs.configuration.CodecConfigurationException:Kann keinen Codec für die Klasse io.github.ilkgunel.mongodb.Pojo finden

So wie es aussieht, versuchen Sie, einen benutzerdefinierten Datentyp hinzuzufügen (in diesem Fall Ihr POJO), aber Sie müssen bedenken, dass Felder in Dokumenten nur bestimmte Datentypen akzeptieren können, keine Objekte direkt .

Falls Sie es auch nicht wussten, Mongo-Dokumente sind genauso strukturiert wie json. Sie müssen also die Dokumente explizit erstellen, indem Sie die Felder erstellen und die Werte in sie einfügen. Es gibt bestimmte Datentypen, die in Wertfeldern erlaubt sind:

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

Um Ihnen bei Ihrem Fall zu helfen, nimmt der unten stehende Code Ihr POJO als Parameter und gibt bei Kenntnis der Struktur des POJO ein Mongo-Dokument zurück, das in Ihre Sammlung eingefügt werden kann:

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;
} 

Dies sollte für das Einfügen funktionieren. Wenn Sie eines der Felder indizieren möchten:

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

Ich hoffe, das beantwortet Ihre Frage und funktioniert für Sie.