Java POJO作为mongodb中的文件
我正在尝试将实体保存为Mongodb中的文档,并尝试为其创建编解码器。而且它似乎不起作用。我尝试了Morphia,但找不到关于在运行时使用Morphia向文档中添加额外字段的文档。这将违背最初使用Mongodb的基本目的。 我最初希望我的文档在POJO中有固定数量的字段。在应用程序运行期间,字段的数量应该改变Java POJO作为mongodb中的文件,java,entities,annotated-pojos,Java,Entities,Annotated Pojos,我正在尝试将实体保存为Mongodb中的文档,并尝试为其创建编解码器。而且它似乎不起作用。我尝试了Morphia,但找不到关于在运行时使用Morphia向文档中添加额外字段的文档。这将违背最初使用Mongodb的基本目的。 我最初希望我的文档在POJO中有固定数量的字段。在应用程序运行期间,字段的数量应该改变 有人能给我建议我该怎么做吗?我不知道这是否是一个好的解决方案,但以下是我所做的。 如果您没有为Mongodb使用Morphia。您希望将POJO实体序列化。您可以像下面显示的代码那样执行此
有人能给我建议我该怎么做吗?我不知道这是否是一个好的解决方案,但以下是我所做的。 如果您没有为Mongodb使用Morphia。您希望将POJO实体序列化。您可以像下面显示的代码那样执行此操作。但是,如果您想要组织数据,就必须维护setters调用序列 下面是两个类,它们给出了一些提示
package com.mongodbtest.entities;
import java.io.Serializable;
import org.bson.Document;
import org.bson.BsonDocument;
import org.bson.BsonInt32;
import org.bson.BsonNumber;
import org.bson.BsonString;
public class User extends BsonDocument {
/**
*
*/
private static final long serialVersionUID = -9167404209850672507L;
// private String _id;
private BsonString name;
private BsonString email;
private BsonString address;
private BsonInt32 phno;
public User(String name, String email, StringBuilder address, Number phno) {
super();
this.name = new BsonString(name);
this.email = new BsonString(email);
this.address = new BsonString(address.toString());
this.phno = new BsonInt32(phno.intValue());
}
public User() {
}
public BsonString getName() {
return this.name;
}
public void setName(String name) {
this.name = new BsonString(name);
this.append("name", this.name);
}
public BsonString getEmail() {
return email;
}
public void setEmail(String email) {
this.email = new BsonString(email);
this.append("email", this.email);
}
public BsonString getAddress() {
return address;
}
public void setAddress(StringBuilder address) {
this.address = new BsonString(address.toString());
this.append("address", this.address);
}
public BsonInt32 getPhno() {
return phno;
}
public void setPhno(Number phno) {
this.phno = new BsonInt32(phno.intValue());
this.append("phno", this.phno);
}
}
序列化它的类将如下所示
package com.mongodb.sample;
import org.bson.BsonDocument;
import org.bson.Document;
import com.mogodbsample.config.DBconfig;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodbtest.entities.User;
public class Firstmongoaccess {
public static void main(String... args) {
MongoDatabase dataase = DBconfig.getdatabase();
MongoCollection<User> collection = dataase.getCollection("users", User.class);
User u1 = new User();
u1.setAddress(new StringBuilder("something street bangalore 356322"));
u1.setName("xxxxxx");
u1.setEmail("gh@gmail.com");
u1.setPhno(3263433);
collection.insertOne(u1);
MongoCursor<? extends BsonDocument> cursor = collection.find().iterator();
try {
while (cursor.hasNext()) {
System.out.println(cursor.next().toJson());
}
} finally {
cursor.close();
}
}
}
package com.mongodb.sample;
导入org.bson.BsonDocument;
导入org.bson.Document;
导入com.mogodbsample.config.DBconfig;
导入com.mongodb.client.MongoCollection;
导入com.mongodb.client.MongoCursor;
导入com.mongodb.client.MongoDatabase;
导入com.mongodbtest.entities.User;
公共类Firstmongoaccess{
公共静态void main(字符串…参数){
MongoDatabase Database=DBconfig.getdatabase();
MongoCollection collection=dataase.getCollection(“用户”,User.class);
用户u1=新用户();
u1.设置地址(新StringBuilder(“班加罗尔某物街356322”);
u1.设置名称(“xxxxxx”);
u1.setEmail(“gh@gmail.com");
u1.setPhno(3263433);
收藏:insertOne(u1);
MongoCursor我不知道这是否是一个好的解决方案,但以下是我所做的。
如果您不在Mongodb中使用Morphia,并且希望对POJO实体进行序列化,则可以像下面的代码所示那样执行此操作。但是,如果您希望对数据进行组织,则必须维护setters调用序列
下面是两个类,它们给出了一些提示
package com.mongodbtest.entities;
import java.io.Serializable;
import org.bson.Document;
import org.bson.BsonDocument;
import org.bson.BsonInt32;
import org.bson.BsonNumber;
import org.bson.BsonString;
public class User extends BsonDocument {
/**
*
*/
private static final long serialVersionUID = -9167404209850672507L;
// private String _id;
private BsonString name;
private BsonString email;
private BsonString address;
private BsonInt32 phno;
public User(String name, String email, StringBuilder address, Number phno) {
super();
this.name = new BsonString(name);
this.email = new BsonString(email);
this.address = new BsonString(address.toString());
this.phno = new BsonInt32(phno.intValue());
}
public User() {
}
public BsonString getName() {
return this.name;
}
public void setName(String name) {
this.name = new BsonString(name);
this.append("name", this.name);
}
public BsonString getEmail() {
return email;
}
public void setEmail(String email) {
this.email = new BsonString(email);
this.append("email", this.email);
}
public BsonString getAddress() {
return address;
}
public void setAddress(StringBuilder address) {
this.address = new BsonString(address.toString());
this.append("address", this.address);
}
public BsonInt32 getPhno() {
return phno;
}
public void setPhno(Number phno) {
this.phno = new BsonInt32(phno.intValue());
this.append("phno", this.phno);
}
}
序列化它的类将如下所示
package com.mongodb.sample;
import org.bson.BsonDocument;
import org.bson.Document;
import com.mogodbsample.config.DBconfig;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodbtest.entities.User;
public class Firstmongoaccess {
public static void main(String... args) {
MongoDatabase dataase = DBconfig.getdatabase();
MongoCollection<User> collection = dataase.getCollection("users", User.class);
User u1 = new User();
u1.setAddress(new StringBuilder("something street bangalore 356322"));
u1.setName("xxxxxx");
u1.setEmail("gh@gmail.com");
u1.setPhno(3263433);
collection.insertOne(u1);
MongoCursor<? extends BsonDocument> cursor = collection.find().iterator();
try {
while (cursor.hasNext()) {
System.out.println(cursor.next().toJson());
}
} finally {
cursor.close();
}
}
}
package com.mongodb.sample;
导入org.bson.BsonDocument;
导入org.bson.Document;
导入com.mogodbsample.config.DBconfig;
导入com.mongodb.client.MongoCollection;
导入com.mongodb.client.MongoCursor;
导入com.mongodb.client.MongoDatabase;
导入com.mongodbtest.entities.User;
公共类Firstmongoaccess{
公共静态void main(字符串…参数){
MongoDatabase Database=DBconfig.getdatabase();
MongoCollection collection=dataase.getCollection(“用户”,User.class);
用户u1=新用户();
u1.设置地址(新StringBuilder(“班加罗尔某物街356322”);
u1.设置名称(“xxxxxx”);
u1.setEmail(“gh@gmail.com");
u1.setPhno(3263433);
收藏:insertOne(u1);
MongoCursor