gpt4 book ai didi

java - MongoDB Java 插入抛出 org.bson.codecs.configuration.CodecConfigurationException : Can't find a codec for class io. github.ilkgunel.mongodb.Pojo

转载 作者:IT老高 更新时间:2023-10-28 13:11:50 36 4
gpt4 key购买 nike

我正在使用 Java 学习 MongoDB。我正在尝试使用 Java 驱动程序将数据插入 MongoDB。我正在像 MongoDB 教程中一样进行插入,而且一切都很好。但是如果我想插入一个变量,当我运行代码时,驱动程序会抛出这样的错误:

org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class io.github.ilkgunel.mongodb.Pojo.

我在 Stack Overflow 中搜索过这样的问题,但我什么都不懂,也找不到任何东西可以解决这个错误。我的代码如下。如何解决这个问题?

我正在使用此代码:

package io.github.ilkgunel.mongodb;
import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Locale;

public class MongoDBBasicUsage {
public static void main(String[] args) {
MongoClient mongoClient;
try {
Pojo pojo = new Pojo();
mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("MongoDB");

pojo.setId("1");
pojo.setName("ilkay");
pojo.setSurname("günel");

Document document = new Document();
document.put("person", pojo);

database.getCollection("Records").insertOne(document);
} catch (Exception e) {
System.err.println("Bir Hata Meydana Geldi!");
System.out.println("Hata" + e);
}
}
}

我的 Pojo 是这样的:

    package io.github.ilkgunel.mongodb;

public class Pojo {
String name;
String surname;
String id;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSurname() {
return surname;
}

public void setSurname(String surname) {
this.surname = surname;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}
}

最佳答案

从您尝试执行的操作来看,您正在尝试添加一些自定义数据类型(在本例中为您的 POJO),但您需要记住的是文档中的字段只能接受某些数据类型,不是直接的对象。

如果您也不知道,Mongo 文档的结构与 json 相同。因此,您必须通过创建字段并将值插入其中来显式创建文档。值字段中允许使用特定的数据类型:

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

为了帮助您解决问题,下面的代码将您的 POJO 作为参数并了解 POJO 的结构,返回一个可以插入到您的集合中的 Mongo 文档:

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

这应该适用于插入。如果要索引其中一个字段:

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

我希望这能回答您的问题并为您工作。

关于java - MongoDB Java 插入抛出 org.bson.codecs.configuration.CodecConfigurationException : Can't find a codec for class io. github.ilkgunel.mongodb.Pojo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39433775/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com