Java 是否将BSON MongoDB文档映射到MyClass.class对象?
祝大家今天愉快 我试图理解JAVA中的MongoDB。我正在尝试将MongoDB文档对象映射到我自己的java对象 我的MongoDB文档结构: MyClass.class模型: 我尝试使用JAVA: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
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>