You can retrieve documents from MongoDB using either of the following methods:
- find
- findOne
Find
The find() method is the primary method to select documents from a collection. The find() method returns a cursor that contains a number of documents. Most drivers provide application developers with a native iterable interface for handling cursors and accessing documents. The find() method has the following syntax:
db.collection.find( <query>, <projection> )
The find() method is analogous to the SELECT statement, while:
- the <query> argument corresponds to the WHERE statement, and
- the <projection> argument corresponds to the list of fields to select from the result set.
Find One
The findOne() method selects and returns a single document from a collection and returns that document. findOne() does not return a cursor.
The findOne() method has the following syntax:
db.collection.findOne( <query>, <projection> )
Except for the return value, findOne() method is quite similar to the find() method; in fact, internally, the findOne() method is the find() method with a limit of 1.
Cursor
The find() method returns a cursor to the results; however, in the mongo shell, if the returned cursor is not assigned to a variable, then the cursor is automatically iterated up to 20 times to print up to the first 20 documents that match the query, as in the following example:
db.bios.find( { _id: 1 } );
In Java MongoDB API, you can use collection.find() to get / query document from collection. Here is few common use cases :
For this example we have insert some document into the mongoDB “dineshonjavaDB“
as follows inserting 10 documents to the “employee” collection on mongoDB.
for (int i=10001; i <= 10010; i++) {
collection.insert(new BasicDBObject().append("empId", i));
}
1. Fetch first record.
DBObject doc = collection.findOne(); //get first document System.out.println(dbObject);
2. Get the set of document.
DBCursor cursor = collection.find();
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
3. fetch documents where empId = 8.
BasicDBObject query = new BasicDBObject();
query.put("empId", 10008);
DBCursor cursor = collection.find(query);
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
4. fetch documents where number = 10009 and 10010, use “$in” operator.
BasicDBObject query = new BasicDBObject();
List<Integer> list = new ArrayList<Integer>();
list.add(10009);
list.add(10010);
query.put("empId", new BasicDBObject("$in", list));
DBCursor cursor = collection.find(query);
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
5. fetch documents where empId > 10003, use “$gt” operator.
BasicDBObject query = new BasicDBObject();
query.put("empId", new BasicDBObject("$gt", 10003));
DBCursor cursor = collection.find(query);
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
6. fetch documents where 10002 < number < 10005, combine two operators, “$gt” and “$lt”.
BasicDBObject query = new BasicDBObject();
query.put("empId", new BasicDBObject("$gt", 10002).append("$lt", 10005));
DBCursor cursor = collection.find(query);
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
7. fetch documents where number != 10001, use “$ne” operator.
BasicDBObject query = new BasicDBObject();
query.put("empId", new BasicDBObject("$ne", 10001));
DBCursor cursor = collection.find(query);
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
Now lets see the full example and run this ..
package com.dineshonjava.mongo.test;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
/**
* @author Dinesh Rajput
*
*/
public class ReadDocumentDemo {
public static void main(String[] args) {
try {
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("dineshonjavaDB");
// get a single collection
DBCollection collection = db.getCollection("employeesCollection");
// insert empId 10001 to 10010 for testing
for (int i = 10001; i <= 10010; i++) {
collection.insert(new BasicDBObject().append("empId", i));
}
// get first document
DBObject dbObject = collection.findOne();
System.out.println(dbObject);
System.out.println("*****************First Test*****************");
// get all available documents
DBCursor cursor = collection.find();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
System.out.println("*****************Second Test*****************");
// get document, where empId = 10003
BasicDBObject query = new BasicDBObject();
query.put("empId", 10003);
DBCursor cursor2 = collection.find(query);
while (cursor2.hasNext()) {
System.out.println(cursor2.next());
}
System.out.println("*****************Third Test*****************");
// get document, where empId = 10002 and empId = 10004
BasicDBObject query2 = new BasicDBObject();
List<Integer> list = new ArrayList<Integer>();
list.add(10002);
list.add(10004);
query2.put("empId", new BasicDBObject("$in", list));
DBCursor cursor3 = collection.find(query2);
while (cursor3.hasNext()) {
System.out.println(cursor3.next());
}
System.out.println("*****************Fourth Test*****************");
// get document, where empId > 10006
BasicDBObject query3 = new BasicDBObject();
query3.put("empId", new BasicDBObject("$gt", 10006));
DBCursor cursor4 = collection.find(query3);
while (cursor4.hasNext()) {
System.out.println(cursor4.next());
}
System.out.println("*****************Fifth Test*****************");
// get document, where 10005 < empId < 10007
BasicDBObject query4 = new BasicDBObject();
query4.put("empId", new BasicDBObject("$gt", 10005).append("$lt", 10007));
DBCursor cursor5 = collection.find(query4);
while (cursor5.hasNext()) {
System.out.println(cursor5.next());
}
System.out.println("*****************Sixth Test*****************");
// get document, where empId != 10008
BasicDBObject query5 = new BasicDBObject();
query5.put("empId", new BasicDBObject("$ne", 10008));
DBCursor cursor6 = collection.find(query5);
while (cursor6.hasNext()) {
System.out.println(cursor6.next());
}
System.out.println("Done");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
}
If every thing is fine then run as Java Application we will get the following output on the console.
{ “_id” : { “$oid” : “5106c015c781b5829079a5da”} , “empId” : 10001}
*****************First Test*****************
{ “_id” : { “$oid” : “5106c015c781b5829079a5da”} , “empId” : 10001}
{ “_id” : { “$oid” : “5106c015c781b5829079a5db”} , “empId” : 10002}
{ “_id” : { “$oid” : “5106c015c781b5829079a5dc”} , “empId” : 10003}
{ “_id” : { “$oid” : “5106c015c781b5829079a5dd”} , “empId” : 10004}
{ “_id” : { “$oid” : “5106c015c781b5829079a5de”} , “empId” : 10005}
{ “_id” : { “$oid” : “5106c015c781b5829079a5df”} , “empId” : 10006}
{ “_id” : { “$oid” : “5106c015c781b5829079a5e0”} , “empId” : 10007}
{ “_id” : { “$oid” : “5106c015c781b5829079a5e1”} , “empId” : 10008}
{ “_id” : { “$oid” : “5106c015c781b5829079a5e2”} , “empId” : 10009}
{ “_id” : { “$oid” : “5106c015c781b5829079a5e3”} , “empId” : 10010}
*****************Second Test*****************
{ “_id” : { “$oid” : “5106c015c781b5829079a5dc”} , “empId” : 10003}
*****************Third Test*****************
{ “_id” : { “$oid” : “5106c015c781b5829079a5db”} , “empId” : 10002}
{ “_id” : { “$oid” : “5106c015c781b5829079a5dd”} , “empId” : 10004}
*****************Fourth Test*****************
{ “_id” : { “$oid” : “5106c015c781b5829079a5e0”} , “empId” : 10007}
{ “_id” : { “$oid” : “5106c015c781b5829079a5e1”} , “empId” : 10008}
{ “_id” : { “$oid” : “5106c015c781b5829079a5e2”} , “empId” : 10009}
{ “_id” : { “$oid” : “5106c015c781b5829079a5e3”} , “empId” : 10010}
*****************Fifth Test*****************
{ “_id” : { “$oid” : “5106c015c781b5829079a5df”} , “empId” : 10006}
*****************Sixth Test*****************
{ “_id” : { “$oid” : “5106c015c781b5829079a5da”} , “empId” : 10001}
{ “_id” : { “$oid” : “5106c015c781b5829079a5db”} , “empId” : 10002}
{ “_id” : { “$oid” : “5106c015c781b5829079a5dc”} , “empId” : 10003}
{ “_id” : { “$oid” : “5106c015c781b5829079a5dd”} , “empId” : 10004}
{ “_id” : { “$oid” : “5106c015c781b5829079a5de”} , “empId” : 10005}
{ “_id” : { “$oid” : “5106c015c781b5829079a5df”} , “empId” : 10006}
{ “_id” : { “$oid” : “5106c015c781b5829079a5e0”} , “empId” : 10007}
{ “_id” : { “$oid” : “5106c015c781b5829079a5e2”} , “empId” : 10009}
{ “_id” : { “$oid” : “5106c015c781b5829079a5e3”} , “empId” : 10010}
Done
Download Source Code + Libs
MongoDBQueryDemo.zip
Reference






