Http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html introduced to the MONGODB console to complete the data operation of MongoDB, We have a comprehensive understanding and understanding of MongoDB through the previous article. Now we're going to use Java to manipulate MongoDB data.
Development environment:
System:windows
Ide:eclipse, MyEclipse 8
Database:mongodb
Developing dependent libraries:
JavaEE5, Mongo-2.5.3.jar, Junit-4.8.2.jar
Email:[email protected]
Blog:http://blog.csdn.net/ibm_hoojo
http://hoojo.cnblogs.com/
First, the preparatory work
1. First, download MongoDB support for Java driver package
Drive Pack: Https://github.com/mongodb/mongo-java-driver/downloads
MongoDB support for Java, technology: Http://www.mongodb.org/display/DOCS/Java+Language+Center
Drive Source Download: Https://download.github.com/mongodb-mongo-java-driver-r2.6.1-7-g6037357.zip
Online View Source: Https://github.com/mongodb/mongo-java-driver
2. Build a Javaproject project below and import the downloaded driver package. You can use MongoDB in Java with the following directory:
Second, Java operation MongoDB Example
Before this example you need to start the Mongod.exe service, the following program can be executed successfully after startup;
1, establish Simpletest.java, complete the simple MongoDB database operation
Mongo Mongo = new Mongo ();
This creates a MongoDB database connection object, which is connected by default to the current machine's localhost address, and the port is 27017.
DB db = Mongo.getdb ("test");
This will get a test database, if MongoDB does not create this database can also run normally. If you read the previous article, you know that MongoDB can do the data addition without creating the database. When added, without this library, MongoDB will automatically create the current database.
Get the db, next we want to get a "aggregation set dbcollection", through the DB object GetCollection method to complete.
Dbcollection users = db.getcollection ("users");
This gives you a dbcollection, which is equivalent to the "table" of our database.
Querying all data
Dbcursor cur = users.find ();
while (Cur.hasnext ()) {
System.out.println (Cur.next ());
}
Full source
Package com.hoo.test;
Import java.net.UnknownHostException;
Import Com.mongodb.DB;
Import com.mongodb.DBCollection;
Import Com.mongodb.DBCursor;
Import Com.mongodb.Mongo;
Import com.mongodb.MongoException;
Import Com.mongodb.util.JSON;
/**
* <b>function:</b>mongodb Simple Example
* @author Hoojo
* @createDate 2011-5-24 02:42:29
* @file Simpletest.java
* @package Com.hoo.test
* @project MongoDB
* @blog Http://blog.csdn.net/IBM_hoojo
* @email [email protected]
* @version 1.0
*/
public class SimpleTest {
public static void Main (string[] args) throws Unknownhostexception, Mongoexception {
Mongo mg = new Mongo ();
Query all the database
For (String name:mg.getDatabaseNames ()) {
System.out.println ("DbName:" + name);
}
DB db = Mg.getdb ("test");
Querying all the aggregation collections
For (String name:db.getCollectionNames ()) {
System.out.println ("CollectionName:" + name);
}
Dbcollection users = db.getcollection ("users");
Querying all the data
Dbcursor cur = users.find ();
while (Cur.hasnext ()) {
System.out.println (Cur.next ());
}
System.out.println (Cur.count ());
System.out.println (Cur.getcursorid ());
System.out.println (json.serialize (cur));
}
}
2, complete the crud operation, first set up a Mongodb4crudtest.java, the basic test code is as follows:
Package com.hoo.test;
Import java.net.UnknownHostException;
Import java.util.ArrayList;
Import java.util.List;
Import Org.bson.types.ObjectId;
Import Org.junit.After;
Import Org.junit.Before;
Import Org.junit.Test;
Import Com.mongodb.BasicDBObject;
Import com.mongodb.Bytes;
Import Com.mongodb.DB;
Import com.mongodb.DBCollection;
Import Com.mongodb.DBCursor;
Import Com.mongodb.DBObject;
Import Com.mongodb.Mongo;
Import com.mongodb.MongoException;
Import com.mongodb.QueryOperators;
Import Com.mongodb.util.JSON;
/**
* <b>function:</b> to implement MONGODB CRUD operations
* @author Hoojo
* @createDate 2011-6-2 03:21:23
* @file Mongodb4crudtest.java
* @package Com.hoo.test
* @project MongoDB
* @blog Http://blog.csdn.net/IBM_hoojo
* @email [email protected]
* @version 1.0
*/
public class Mongodb4crudtest {
Private Mongo mg = null;
private DB DB;
Private dbcollection users;
@Before
public void init () {
try {
MG = new Mongo ();
MG = new Mongo ("localhost", 27017);
} catch (Unknownhostexception e) {
E.printstacktrace ();
} catch (Mongoexception e) {
E.printstacktrace ();
}
Gets the temp DB; if not created by default, MongoDB automatically creates
db = Mg.getdb ("temp");
Get users dbcollection; if not created by default, MongoDB will automatically create
Users = Db.getcollection ("users");
}
@After
public void Destory () {
if (mg! = null)
Mg.close ();
MG = null;
db = null;
users = null;
System.GC ();
}
public void print (Object o) {
System.out.println (o);
}
}
3. Add operation
Before adding the operation, we need to write a query method to query all the data. The code is as follows:
/**
* <b>function:</b> Search all data
* @author Hoojo
* @createDate 2011-6-2 03:22:40
*/
private void Queryall () {
Print ("Query all data from users:");
DB cursors
Dbcursor cur = users.find ();
while (Cur.hasnext ()) {
Print (Cur.next ());
}
}
@Test
public void Add () {
Query all data First
Queryall ();
Print ("Count:" + users.count ());
DBObject user = new Basicdbobject ();
User.put ("name", "Hoojo");
User.put ("Age", 24);
Users.save (user) Save, GETN () Gets the number of rows affected
Print (Users.save (user). GETN ());
Expand Fields, add fields as you wish, without affecting existing data
User.put ("Sex", "male");
Print (Users.save (user). GETN ());
Add multiple data, pass array object
Print (Users.insert (user, new Basicdbobject ("name", "Tom")). GETN ());
Add List Collection
list<dbobject> list = new arraylist<dbobject> ();
List.add (user);
DBObject user2 = new Basicdbobject ("name", "Lucy");
User.put ("Age", 22);
List.add (User2);
Add List Collection
Print (Users.insert (list). GETN ());
Query the data to see if the add succeeds
Print ("Count:" + users.count ());
Queryall ();
}
4. Delete data
@Test
public void Remove () {
Queryall ();
Print ("Delete id = 4de73f7acd812d61b4626a77:" + users.remove (New Basicdbobject ("_id", New ObjectId (" 4de73f7acd812d61b4626a77 ")). GETN ());
Print ("Remove Age >=:" + users.remove (New Basicdbobject (' age ', New Basicdbobject ("$gte")). GETN ());
}
5. Modify the data
@Test
public void Modify () {
Print ("Modify:" + users.update (New Basicdbobject ("_id", New ObjectId ("4dde25d06be7c53ffbd70906")), New Basicdbobject ("Age ). GETN ());
Print ("Modify:" + users.update (
New Basicdbobject ("age", 121),
true,//If the database does not exist, whether to add
false//Multiple Modifications
). GETN ());
Print ("Modify:" + users.update (
New Basicdbobject ("name", "Dingding"),
true,//If the database does not exist, whether to add
True//false only change the first day, true if there are more than one, do not modify
). GETN ());
Do not modify or add data when the database does not exist, when multiple data is not modified
Print ("Modify multiple:" + coll.updatemulti (New Basicdbobject ("_id", New ObjectId ("4dde23616be7c19df07db42c"), new Basicdbobject ("Name", "199"));
}
6. Query data
@Test
public void query () {
Query all
Queryall ();
Query id = 4de73f7acd812d61b4626a77
Print ("Find id = 4de73f7acd812d61b4626a77:" + users.find (New Basicdbobject ("_id", New ObjectId (" 4de73f7acd812d61b4626a77 ")). ToArray ());
Query age = 24
Print ("Find age =:" + users.find (New Basicdbobject ("Age",)). ToArray ());
Query Age >= 24
Print ("Find age >=:" + users.find (New Basicdbobject ("Age", New Basicdbobject ("$gte")). ToArray ());
Print ("Find age <=:" + users.find (New Basicdbobject ("Age", New Basicdbobject ("$lte")). ToArray ());
Print ("Query age!=25:" + users.find (New Basicdbobject ("Age", New Basicdbobject ("$ne")). ToArray ());
Print ("Query age in 25/26/27:" + users.find (New Basicdbobject ("Age", New Basicdbobject (queryoperators.in, new int[] {25, 26, )). ToArray ());
Print ("Query age not in 25/26/27:" + users.find (New Basicdbobject ("Age", New Basicdbobject (Queryoperators.nin, new int[] {25, )). ToArray ());
Print ("Query Age exists sort:" + users.find (New Basicdbobject ("Age", New Basicdbobject (Queryoperators.exists, True)). ToArray ());
Print ("Query only Age Property:" + Users.find (null, New Basicdbobject ("Age", true)). ToArray ());
Print ("Check properties only:" + users.find (null, New Basicdbobject ("Age", true), 0, 2). ToArray ());
Print ("Check properties only:" + users.find (null, New Basicdbobject ("Age", true), 0, 2, bytes.queryoption_notimeout). ToArray ());
Query only one piece of data, multiple to the first
Print ("FindOne:" + users.findone ());
Print ("FindOne:" + users.findone (New Basicdbobject ("Age", 26));
Print ("FindOne:" + users.findone (New Basicdbobject ("Age", "page"), New Basicdbobject ("name", true));
Query modification, deletion
Print ("Findandremove query age=25 data, and delete:" + users.findandremove (New Basicdbobject ("Age", 25));
Query the age=26 data, and modify the value of name to ABC
Print ("findandmodify:" + users.findandmodify ("New Basicdbobject" ("Age", "page"), New Basicdbobject ("name", "ABC"));
Print ("findandmodify:" + users.findandmodify (
New Basicdbobject ("Age", 28),//Querying age=28 data
New Basicdbobject ("name", true),//Query the Name property
New Basicdbobject ("Age", true),//Sort by age
False,//Whether Delete, true means delete
New Basicdbobject ("name", "ABC"),//modified value, change name to ABC
true));
Queryall ();
}
MongoDB does not support federated queries, subqueries, which need to be done by ourselves in the program. The result set of the query is filtered in the Java query as needed.
7. Other operations
public void Testothers () {
DBObject user = new Basicdbobject ();
User.put ("name", "Hoojo");
User.put ("Age", 24);
JSON Object Transformation
Print ("Serialize:" + json.serialize (user));
Deserialization
Print ("Parse:" + json.parse ("{/" name/":/" hoojo/",/" age/": 24}"));
Print ("Determine if temp collection exists:" + db.collectionexists ("temp"));
If it does not exist, create
if (!db.collectionexists ("temp")) {
DBObject options = new Basicdbobject ();
Options.put ("size", 20);
Options.put ("capped", 20);
Options.put ("Max", 20);
Print (Db.createcollection ("Account", options));
}
Set DB to read-only
Db.setreadonly (TRUE);
Read-only cannot write data
Db.getcollection ("Test"). Save (user);
}
Well, here's basically a way to introduce so many Java operations to MongoDB. Other things need your own research. The above methods of manipulating MongoDB are some common methods,
Java Development--Operation MongoDB