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 1937671167ff7fd36d79da91aeb385e82aaeab4f..b1b00e6f4c5dfab35ef184bce9bcb9931abefd48 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;