Re: Getting list of Documents into Java List using Mongo DB Async Driver

From: Ross Lawley <ross@xxxxxxxxxxx>
To: mongodb-user@xxxxxxxxxxxxxxxx
Date: Tue, 10 May 2016 09:47:42 +0100
Why ads?
Hi Chandra,

The Async api mirrors the sync API, however as operations are non blocking
the results are passed to the callback at some point in the future - once
the operation has completed.  With the into() method you can supply a list
from outside the scope of the method call eg:

List<Document> *myList* = new ArrayList<Document>();
collection.find().into(*myList*,
  new SingleResultCallback<List<Document>>() {
    @Override
    public void onResult(final List<Document> result, final Throwable t) {
        System.out.println("Operation Finished and myList now contains the
results");
    }
});

The callback is completed once the into method has finished and can return
the filled collection containing the query results.  From the example above
you can see that the `myList` variable will eventually contain all the
results, so you can use it outside the bounds of the callback. As this is a
non blocking method care should be taken to ensure that callback has
completed before trying to use `myList`.

I hope that helps,

Ross




On Tue, May 10, 2016 at 7:29 AM, Chandramouli Putta <p.moulich@xxxxxxxxx>
wrote:

Hello All,


I am a newbie to the MongoDB. There was a suggestion to use the MongoDB
Async Java Driver API instead of Spring-Data/Mongo DB Driver API since the
async API supports the callbacks and non-blocking calls to the DB. While I
was going through the below links I have noticed few differences.

Async Driver API:
http://mongodb.github.io/mongo-java-driver/3.0/driver-async/reference/crud/Sync
Driver API:
http://mongodb.github.io/mongo-java-driver/3.0/driver/reference/crud/

The main difference of my concern is, how can we get the resultset
documents into an arraylist/linkedlist using the async driver api. The
async api page gives the below code block to traverse through the results,
but not assigning them into a list of our choice:

// find documents
collection.find().into(new ArrayList<Document>(),
    new SingleResultCallback<List<Document>>() {
        @Override
        public void onResult(final List<Document> result, final Throwable t) {
            System.out.println("Found Documents: #" + result.size());
        }
    });

This copies the documents into the new ArrayList (the first argument of
into method), but there is no way to get it back.

While the sync api supports the operation like below, which copies all the
result documents into an arraylist.

// find documentsList<BasicDBObject> foundDocument = collection.find().into(new ArrayList<BasicDBObject>());

Is the Async API still evolving or I am missing something? Are there any
utilities available specifically for async driver api Inputs are greatly
appreciated.


Best Regards, Chandra.

--
You received this message because you are subscribed to the Google Groups
"mongodb-user"
group.

For other MongoDB technical support options, see:
https://docs.mongodb.org/manual/support/
---
You received this message because you are subscribed to the Google Groups
"mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit
https://groups.google.com/d/msgid/mongodb-user/28fcf2e7-7cc7-42e5-8038-71d70d7708e5%40googlegroups.com
<https://groups.google.com/d/msgid/mongodb-user/28fcf2e7-7cc7-42e5-8038-71d70d7708e5%40googlegroups.com?utm_medium=email&utm_source=footer>
.
For more options, visit https://groups.google.com/d/optout.




-- 


*{* name     : "Ross Lawley",
  title    : "Senior Software Engineer",
  location : "London, UK",
  twitter  : ["@RossC0 <http://twitter.com/rossc0>", "@MongoDB
<https://twitter.com/mongodb>"],
  facebook :"MongoDB
<https://www.google.com/url?q=https%3A%2F%2Fwww.facebook.com%2Fmongodb&sa=D&sntz=1&usg=AFQjCNGPMcaFBzmWsh-MpaWeTH6vMQoDIg>
"*}*

-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: https://docs.mongodb.org/manual/support/
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/CAOjLY%2BHSJNnMw%2BHhD2%2BFf13VpNbrrcJ%2BcdjUjeRijWML%3DRLJpw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?