如何将双值和字符串值插入MongoDB

时间:2014-10-24 10:06:52

标签: java mongodb mongodb-query database

这是我向mongoDB插入内容的代码

List<DBObject> write=new ArrayList<DBObject>();   //write is a list of objects

//我正在使用循环从列表中获取每个对象。

DBObject doc = new BasicDBObject("product_name", item.getName()).
                            append("product_url", item.getUrl()).
                            append("product_img", item.getImage()).
                            append("product_price", item.getPrice()).
                            append("time",item.getTime()).
                            append("category", item.getCategory());
write.add(doc);

// t = db.getCollection(table);     t.insert(写);

当我尝试使用价格作为字符串值没有错误..我想将价格改为双倍值,因为我将价格改为双倍,然后我将代码更改为

getdouble("product_price", item.getPrice());  //used this instead of .append

然后错误并告诉我将doc更改为double ..但我不能将doc更改为double,因为其他值是字符串并且它将再次显示错误..

请告诉我如何将带有其他字符串值的double插入到mongoDB

我是MongoDB的新手

1 个答案:

答案 0 :(得分:0)

由于您在一列中混合了类型,因此您必须先检查类型(此代码用于读取记录):

if(obj.get("product_price") instanceof String) {
    item.setPrice(Double.parseDouble((String)obj.get("product_price")));
} else {
    item.setPrice(obj.getDouble("product_price"));
}

编写新记录应该很简单,只需使用附加双值:

DBObject doc = new BasicDBObject("product_name", item.getName()).
                            append("product_url", item.getUrl()).
                            append("product_img", item.getImage()).
                            append("product_price", item.getPrice()).
                            append("time",item.getTime()).
                            append("category", item.getCategory());
write.add(doc);

当然,Item必须将getPrice()声明为:

public double getPrice() {return price;}