From 8ae0bd30aaa8b31ac91e6a1753410427232e1089 Mon Sep 17 00:00:00 2001
From: Jeff Yemin <jeff.yemin@10gen.com>
Date: Thu, 9 Jul 2015 20:33:33 -0400
Subject: [PATCH] A bit more cleanup of scan and read in MongoDbClient

---
 .../java/com/yahoo/ycsb/db/MongoDbClient.java    | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/mongodb/src/main/java/com/yahoo/ycsb/db/MongoDbClient.java b/mongodb/src/main/java/com/yahoo/ycsb/db/MongoDbClient.java
index 19376711..b1b00e6f 100644
--- a/mongodb/src/main/java/com/yahoo/ycsb/db/MongoDbClient.java
+++ b/mongodb/src/main/java/com/yahoo/ycsb/db/MongoDbClient.java
@@ -284,7 +284,6 @@ public class MongoDbClient extends DB {
 
             FindIterable<Document> findIterable = collection.find(query);
 
-            Document queryResult = null;
             if (fields != null) {
                 Document projection = new Document();
                 for (String field : fields) {
@@ -293,7 +292,7 @@ public class MongoDbClient extends DB {
                 findIterable.projection(projection);
             }
 
-            queryResult = findIterable.first();
+            Document queryResult = findIterable.first();
 
             if (queryResult != null) {
                 fillMap(result, queryResult);
@@ -335,16 +334,21 @@ public class MongoDbClient extends DB {
             Document scanRange = new Document("$gte", startkey);
             Document query = new Document("_id", scanRange);
             Document sort = new Document("_id", INCLUDE);
-            Document projection = null;
+
+            FindIterable<Document> findIterable = collection.find(query)
+                                                            .sort(sort)
+                                                            .limit(recordcount);
+
             if (fields != null) {
-                projection = new Document();
+                Document projection = new Document();
                 for (String fieldName : fields) {
                     projection.put(fieldName, INCLUDE);
                 }
+                findIterable.projection(projection);
             }
 
-            cursor = collection.find(query)
-                    .projection(projection).sort(sort).limit(recordcount).iterator();
+            cursor = findIterable.iterator();
+
             if (!cursor.hasNext()) {
                 System.err.println("Nothing found in scan for key " + startkey);
                 return 1;
-- 
GitLab