Skip to content

Commit d90bb45

Browse files
committed
JAVA-497: Fix read prefs on findOne for sharded clusters
1 parent f2ac999 commit d90bb45

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/main/com/mongodb/DBCollection.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -700,13 +700,14 @@ public DBObject findOne( DBObject o, DBObject fields, ReadPreference readPref ){
700700
* @dochub find
701701
*/
702702
public DBObject findOne( DBObject o, DBObject fields, DBObject orderBy, ReadPreference readPref ){
703-
704-
DBObject queryop = new QueryOpBuilder()
705-
.addQuery(o)
706-
.addOrderBy(orderBy)
707-
.get();
708-
709-
Iterator<DBObject> i = __find( queryop, fields , 0 , -1 , 0, getOptions(), readPref, getDecoder() );
703+
704+
QueryOpBuilder queryOpBuilder = new QueryOpBuilder().addQuery(o).addOrderBy(orderBy);
705+
706+
if (getDB().getMongo().isMongosConnection()) {
707+
queryOpBuilder.addReadPreference(readPref.toDBObject());
708+
}
709+
710+
Iterator<DBObject> i = __find(queryOpBuilder.get(), fields , 0 , -1 , 0, getOptions(), readPref, getDecoder() );
710711

711712
DBObject obj = (i.hasNext() ? i.next() : null);
712713
if ( obj != null && ( fields != null && fields.keySet().size() > 0 ) ){

0 commit comments

Comments
 (0)