如何在mongodb中更新第二个值?

时间:2015-02-12 10:38:57

标签: java mongodb

我是Mongodb的新手。我完全不知道如何更新它。我有一个名为price的字段。我需要通过从我的价格字段中删除USD来更新它。下面是一个例子.....但是620 (因不同的物品而异)必须留在那里。任何人都可以帮忙。任何帮助都会非常值得。

{
  "_id" : 1234,
  "price" :"620.0,USD",
  "description" : "Awesome"
}

{
  "_id" : 1234,
  "price" :"620.0",
  "description" : "Awesome"
}

提前谢谢.......

2 个答案:

答案 0 :(得分:1)

这不可能直接通过mongo查询,所以可能需要使用java脚本,所以下面的代码将解决你的问题

db.collectionName.find({
    "_id": 1234,
    price: {
    $regex: '^[
        0-9
    ]',
    $options: 'i'
    }
}).forEach(function(doc){
    varupdatedPrice=doc.price.replace(/[
    ^0-9\.
    ]+/g,
    "");
   db.price.update({
    "_id": doc._id
    },
    {
    "$set": {
        "price": updatedPrice
    }
    });
})

答案 1 :(得分:1)

我自己找到了解决方案。

while(cursor.hasNext())
       {
          BasicDBObject doc=(BasicDBObject) cursor.next();
          String s=doc.getString("product_price").split("[,]")[0];
          String s1=doc.getString("product_img").split("[,]")[0];
          Double price=Double.parseDouble(s);

          doc.append("$set",new BasicDBObject().append("product_price", price).append("product_img",s1));

         BasicDBObject updateQuery = new BasicDBObject();
        updateQuery.append("$set", 
            new BasicDBObject().append("product_price", price).append("product_img",s1));

        BasicDBObject searchQuery = new BasicDBObject();
        searchQuery.append("product_id", doc.getString("product_id"));
     System.out.println(doc.getString("product_id"));

        coll.updateMulti(searchQuery, updateQuery);
//      System.exit(1);
        System.out.println("completed");

通过使用上面的代码我解决了我的问题... Thanku