这是我向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的新手
答案 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;}