/*******************************************************************************
* Copyright (c) 2013 hangum.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* hangum - initial API and implementation
******************************************************************************/
package com.hangum.tadpole.mongodb.core.test;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
public class UpdateEx {
public static String MangoDB_IP = "127.0.0.1";
public static String DB_NAME = "test";
public static Mongo m = null;
public static void dropCollection(String name) throws Exception {
if (m == null) m = new Mongo(MangoDB_IP);
DB db = m.getDB(DB_NAME);
DBCollection coll = db.getCollection(name);
coll.drop();
}
public static DBCollection retvCollection(String name) throws Exception {
if (m == null)
m = new Mongo(MangoDB_IP);
DB db = m.getDB(DB_NAME);
DBCollection coll = db.getCollection(name);
return coll;
}
public static void insert(DBCollection coll, String hosting, String type,
int clients) {
BasicDBObject doc = new BasicDBObject();
doc.put("hosting", hosting);
doc.put("type", type);
doc.put("clients", clients);
coll.insert(doc);
}
public static void showCollection(DBCollection coll) {
DBCursor cursorDocJSON = coll.find();
while (cursorDocJSON.hasNext()) {
System.out.println(cursorDocJSON.next());
}
}
// A normal way to update an existing document. Find hosting = hostB, and
// update it with a new document.
public static void exam01(DBCollection collection) throws Exception {
BasicDBObject newDocument = new BasicDBObject();
newDocument.put("hosting", "hostB");
newDocument.put("type", "shared host");
newDocument.put("clients", 111);
collection.update(new BasicDBObject().append("hosting", "hostB"),
newDocument);
}
// Find hosting = hostB, update the "clients" value by increasing its value
public static void exam02(DBCollection collection) throws Exception {
BasicDBObject newDocument = new BasicDBObject().append("$inc",
new BasicDBObject().append("clients", 99));
collection.update(new BasicDBObject().append("hosting", "hostB"),
newDocument);
}
// Find hosting = hostA, update the “type” from “vps” to “dedicated server”.
public static void exam03(DBCollection collection) throws Exception {
BasicDBObject newDocument3 = new BasicDBObject().append("$set",
new BasicDBObject().append("type", "dedicated server"));
collection.update(new BasicDBObject().append("hosting", "hostA"),
newDocument3);
}
public static void exam04(DBCollection collection) throws Exception {
// find type = vps , update all matched documents , "clients" value to
// 888
BasicDBObject updateQuery = new BasicDBObject().append("$set",
new BasicDBObject().append("clients", "888"));
// both methods are doing the same thing.
// collection.updateMulti(new BasicDBObject().append("type", "vps"),
// updateQuery);
collection.update(new BasicDBObject().append("type", "vps"),
updateQuery, false, true);
}
public static void exam05(DBCollection collection) throws Exception {
// find type = vps , update all matched documents , "clients" value to
// 888
BasicDBObject updateQuery = new BasicDBObject().append("$set",
new BasicDBObject().append("clients", "11111"));
BasicDBObject findObj = new BasicDBObject().append("hosting", "hostA");
DBObject dbObj = collection.find(findObj).next();
System.out.println(dbObj);
// both methods are doing the same thing.
// collection.updateMulti(new BasicDBObject().append("type", "vps"),
// updateQuery);
collection.update(dbObj, updateQuery);
}
public static void main(String args[]) throws Exception {
// dropCollection("tutorial_update"); // Reset collection "tutorial_update"
DBCollection coll = retvCollection("tutorial_update");
insert(coll, "hostA", "vps", 1000);
// insert(coll, "hostB", "dedicated server", 100);
// insert(coll, "hostB", "vps", 900);
exam05(coll);
showCollection(coll);
}
}