Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find all objects in collection Java Mongodb

Tags:

java

mongodb

Below code finds the first document in a collection :

package database;

import com.mongodb.BasicDBObject;
import com.mongodb.BulkWriteOperation;
import com.mongodb.BulkWriteResult;
import com.mongodb.Cursor;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.ParallelScanOptions;
import com.mongodb.ServerAddress;

import java.net.UnknownHostException;
import java.util.List;
import java.util.Set;

import static java.util.concurrent.TimeUnit.SECONDS;

// based on http://mongodb.github.io/mongo-java-driver/2.13/getting-started/quick-tour/

public class Mongo {

    public void getCon() {
        // or
        MongoClient mongoClient;
        try {
            mongoClient = new MongoClient("localhost", 27017);
            DB db = mongoClient.getDB("mydb");
            DBCollection coll = db.getCollection("testCollection");

            BasicDBObject doc = new BasicDBObject("name", "MongoDB")
                    .append("type", "database")
                    .append("count", 1)
                    .append("info",
                            new BasicDBObject("x", 203).append("y", 102));
            coll.insert(doc);

            coll.findOne();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

There does not appear to be a findAll method. How to find all the documents in the collection testCollection ?

like image 714
blue-sky Avatar asked Apr 15 '15 19:04

blue-sky


2 Answers

You have to use the DBCollection.find() method, which

Select all documents in collection and get a cursor to the selected documents.

So, what you have to do, is:

DBCursor cursor = coll.find();
while (cursor.hasNext()) {
   DBObject obj = cursor.next();
   //do your thing
}
like image 179
Konstantin Yovkov Avatar answered Oct 16 '22 11:10

Konstantin Yovkov


If you know that the query will return a small enough number of documents, you can use the DBCursor.toArray() method to get all the results into a List:

List<DBObject> all = coll.find().toArray();
like image 38
jyemin Avatar answered Oct 16 '22 11:10

jyemin