1
我正嘗試將實體保存爲Mongodb中的文檔並嘗試爲其創建編解碼器。它似乎並不奏效。我嘗試了Morphia,但是,我無法找到使用morphia在運行時在文檔中添加額外字段的文檔。這將違背使用Mongodb的基本目的。 我最初希望我的文檔具有固定數量的POJO字段。與應用程序的運行過程中的字段數應該改變作爲mongodb中的文檔的POJO
任何一個可以建議我該怎麼辦
我正嘗試將實體保存爲Mongodb中的文檔並嘗試爲其創建編解碼器。它似乎並不奏效。我嘗試了Morphia,但是,我無法找到使用morphia在運行時在文檔中添加額外字段的文檔。這將違背使用Mongodb的基本目的。 我最初希望我的文檔具有固定數量的POJO字段。與應用程序的運行過程中的字段數應該改變作爲mongodb中的文檔的POJO
任何一個可以建議我該怎麼辦
我不知道這是很好的解決方案,但這裏是我做過什麼。 如果你沒有使用Morphia for Mongodb。你希望你的POJO實體被序列化。你可以像下面的代碼所示那樣做。但你如果想對數據進行組織 下面是兩個類給出了一些暗示
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("[email protected]");
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();
}
}
}
保持setter方法調用序列