【发布时间】:2014-04-04 17:12:04
【问题描述】:
我正在一个 Java 项目中使用数据库 mongoDB 进行练习。
我有一个集合“对象”,其中包含有关“对象”信息的所有文档。 这些“对象”在 Java 中用一个名为“LoanboardObject”的类来表示。可以使用 Web 应用程序创建/更改对象,该 Web 应用程序将数据与 Post 消息一起发送到服务器。对象被创建,参数存储在对象中。
LoanBoardObject
public class LoanboardObject implements ILoanBoardEntity {
private ObjectId id;
private String objectName;
private String objectCode;
private String category;
private Boolean lent = false;
private String description = "";
private Boolean enabled = false;
public BasicDBObject toDBObject() {
BasicDBObject object = new BasicDBObject();
object.put("_id", id);
object.put("object_name", objectName);
object.put("object_code", objectCode);
object.put("category", category);
object.put("lent", lent);
object.put("description", description);
object.put("enabled", enabled);
return object;
}
...
}
要将此对象保存到数据库中,我执行以下操作:
NewObjectServlet
//Create the object
LoanboardObject object = new LoanboardObject(objectId, etc...);
//Create the database
MongoDataTx tx = new MongoDataTx(DATABASE);
tx.save(object.toDBObject(), "object");
MongoDataTX
private DB db;
public MongoDataTx(String dbName) {
db = Mongo.getMongoDB().getMongoClient().getDB(dbName);
}
public void save(final DBObject object, String collection) {
DBCollection coll = db.getCollection(collection);
coll.save(object);
}
蒙古人
private static final String HOST = "localhost";
private static final int PORT = 27017;
private static Mongo mongoDB;
private static MongoClient mongo;
public Mongo() {
try {
mongo = new MongoClient(HOST, PORT);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
public static Mongo getMongoDB() {
if (mongoDB == null) {
mongoDB = new Mongo();
}
return mongoDB;
}
public MongoClient getMongoClient() {
return mongo;
}
问题是当一个值为Null时,它仍然添加到数据库中的键值对(但这不是必需的)。解决此问题的一种方法是检查值是否为 Null。
if(id != null){
object.put("_id", id);
}
但是是否可以提供 mongodb 设置,使其忽略值为 Null 的键值对? basicly same as here 但与 Java 相比。
或者我应该使用函数来添加这些值
像这样的
public BasicDBObject toDBObject() {
addElementToObject("_id", id, object);
addElementToObject("object_name", objectName, object);
addElementToObject("object_code", objectCode, object);
addElementToObject("category", category, object);
...
}
private <T> void addElementToObject(String key, T value, BasicDBObject object) {
if (value != null) {
object.put(key, value);
}
}
【问题讨论】:
标签: java mongodb null key-value-store