Java 是否将BSON MongoDB文档映射到MyClass.class对象?

Java 是否将BSON MongoDB文档映射到MyClass.class对象?,java,mongodb,netbeans,pojo,Java,Mongodb,Netbeans,Pojo,祝大家今天愉快 我试图理解JAVA中的MongoDB。我正在尝试将MongoDB文档对象映射到我自己的java对象 我的MongoDB文档结构: MyClass.class模型: 我尝试使用JAVA: publicstaticvoidmain(字符串[]args){ MongoClientURI=新的MongoClientURI( “mongodb+srv://:@cluster.lt8te.mongodb.net/dbProject? retryWrites=真&w=多数“; MongoCli

祝大家今天愉快

我试图理解JAVA中的MongoDB。我正在尝试将MongoDB文档对象映射到我自己的java对象

我的MongoDB文档结构

MyClass.class模型:

我尝试使用JAVA:

publicstaticvoidmain(字符串[]args){
MongoClientURI=新的MongoClientURI(
“mongodb+srv://:@cluster.lt8te.mongodb.net/dbProject?
retryWrites=真&w=多数“;
MongoClient=新的MongoClient(uri);
MongoDatabase db=client.getDatabase(“dbProject”);
MongoCollection coll=db.getCollection(“myCollection”);
Document doc=(Document)coll.find().first();
System.out.println(doc.toJson());
Gson Gson=新的Gson();
MongoObject mongoObj=gson.fromJson(doc.toJson(),MyClass.class);
}
我收到一个错误: 原因:java.lang.IllegalStateException:应为字符串,但在第1行第10列路径$.\u id处为BEGIN\u对象

我认为我的MyClass模型与文档mongoDB模型不匹配。 我不太确定哪里出了错。或者编辑什么?
谢谢。

在最后一行,您试图将JSON映射到MyClass java对象。为此,JSON结构必须与java类相匹配。假设来自
doc.toJson()
的JSON结果看起来像您所展示的Mongo文档,实现您的类如下。我们的想法是,JSON文档的数据类型应该与您的类匹配,例如,JSON中的
Person\u ID
是一个包含三个属性的对象,因此在java类中应该有一个名为Person\u ID的变量,它将属于另一个具有三个属性的类类型

public class MyClass {
    ID _id;
    Person Person_ID;

   //empty constructor
   public MyClass() {}

   // Setters and Getters


}

Class ID{
   public String oid;
   //Getter setter
}

Class Person {
    int numberInt;
    String Name;
    String Lastname;

//Getter setter
}

在最后一行,您尝试将JSON映射到MyClass java对象。为此,JSON结构必须与java类相匹配。假设来自
doc.toJson()
的JSON结果看起来像您所展示的Mongo文档,实现您的类如下。我们的想法是,JSON文档的数据类型应该与您的类匹配,例如,JSON中的
Person\u ID
是一个包含三个属性的对象,因此在java类中应该有一个名为Person\u ID的变量,它将属于另一个具有三个属性的类类型

public class MyClass {
    ID _id;
    Person Person_ID;

   //empty constructor
   public MyClass() {}

   // Setters and Getters


}

Class ID{
   public String oid;
   //Getter setter
}

Class Person {
    int numberInt;
    String Name;
    String Lastname;

//Getter setter
}

所以经过几个小时的学习。在StackOverFlow的帮助下,我可以在这里提出一个可以帮助其他人的解决方案。让我们了解一下BSON文档的结构,我在这里给出了一个示例

此处:

}

MongoDB要求所有文档都有一个“\u id”字段。如果不提供,驱动程序将为ObjectId分配生成的值

现在需要创建此JSON的对象模型。 这样:(维护字段的顺序很重要。)

假设您具有与上述示例相同的文档结构,并且希望将域mongo文档映射到您自己的java类:

public static void main(String[] args)
}
    MongoClient client = new MongoClient(uri);            
    MongoDatabase db = client.getDatabase("dbProject");
    MongoCollection<org.bson.Document> coll = db.getCollection("myCollection");
    Document doc = (Document) coll.find().first();

    Gson gson = new Gson();
    ModelMongo model = gson.fromJson(doc.toJson(), ModelMongo.class);  

    /***                                                ****
    * Now in the variable model is a Document from MongoDB *
    * Access to variables of that Object possible through  *
    * its Getter methods.                              ****/
{
publicstaticvoidmain(字符串[]args)
}
MongoClient=新的MongoClient(uri);
MongoDatabase db=client.getDatabase(“dbProject”);
MongoCollection coll=db.getCollection(“myCollection”);
Document doc=(Document)coll.find().first();
Gson Gson=新的Gson();
ModelMongo model=gson.fromJson(doc.toJson(),ModelMongo.class);
/***                                                ****
*现在变量模型中有一个来自MongoDB的文档*
*可以通过以下方式访问该对象的变量:*
*它的吸气剂方法****/
{
依赖关系:


org.mongodb
布森
4.0.4

因此,经过几个小时的研究。在StackOverFlow的帮助下,我可以在这里提出一个可以帮助他人的解决方案。让我们了解一下BSON文档的结构,我在这里给出了一个示例

此处:

}

MongoDB要求所有文档都有一个“\u id”字段。如果不提供,驱动程序将为ObjectId分配生成的值

现在需要创建此JSON的对象模型。 这样:(维护字段的顺序很重要。)

假设您具有与上述示例相同的文档结构,并且希望将域mongo文档映射到您自己的java类:

public static void main(String[] args)
}
    MongoClient client = new MongoClient(uri);            
    MongoDatabase db = client.getDatabase("dbProject");
    MongoCollection<org.bson.Document> coll = db.getCollection("myCollection");
    Document doc = (Document) coll.find().first();

    Gson gson = new Gson();
    ModelMongo model = gson.fromJson(doc.toJson(), ModelMongo.class);  

    /***                                                ****
    * Now in the variable model is a Document from MongoDB *
    * Access to variables of that Object possible through  *
    * its Getter methods.                              ****/
{
publicstaticvoidmain(字符串[]args)
}
MongoClient=新的MongoClient(uri);
MongoDatabase db=client.getDatabase(“dbProject”);
MongoCollection coll=db.getCollection(“myCollection”);
Document doc=(Document)coll.find().first();
Gson Gson=新的Gson();
ModelMongo model=gson.fromJson(doc.toJson(),ModelMongo.class);
/***                                                ****
*现在变量模型中有一个来自MongoDB的文档*
*可以通过以下方式访问该对象的变量:*
*它的吸气剂方法****/
{
依赖关系:


org.mongodb
布森
4.0.4

谢谢你的帮助。你的建议帮助了我。最后,文档的结构有所不同。但我已经知道如何操作。谢谢!!!谢谢你的帮助。你的建议帮助了我。最后,文档的结构有所不同。但我已经知道如何操作。谢谢!!!简化它看起来你可以有一个p取而代之的是无参数构造函数,它依赖于您的公共getter和setter。为了简化它,您可以使用无参数构造函数,取而代之的是公共getter和setter。
{
   "_id" : {
       "$oid" : "5f2d37f1cdf2f93d01fd5f9a"
   },
   "Person_ID" : {
       "$numberInt" : "3"
   }, "Name" : "John", "Lastname" : "Doe"
import org.bson.types.ObjectId;

public class ModelMongo 
{
    ObjectId _id;
    int Person_ID;
    String Name;
    String Lastname;

    public ModelMongo(ObjectId id, int Person_ID, String Name, String Lastname) 
    }
        this._id = id;
        this.Person_ID = Person_ID;
        this.Name = Name;
        this.Lastname = Lastname;
    {

      // Setter and Getter ...      
}
public static void main(String[] args)
}
    MongoClient client = new MongoClient(uri);            
    MongoDatabase db = client.getDatabase("dbProject");
    MongoCollection<org.bson.Document> coll = db.getCollection("myCollection");
    Document doc = (Document) coll.find().first();

    Gson gson = new Gson();
    ModelMongo model = gson.fromJson(doc.toJson(), ModelMongo.class);  

    /***                                                ****
    * Now in the variable model is a Document from MongoDB *
    * Access to variables of that Object possible through  *
    * its Getter methods.                              ****/
{
<!-- https://mvnrepository.com/artifact/org.mongodb/bson -->
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>bson</artifactId>
    <version>4.0.4</version>
</dependency>