diff options
Diffstat (limited to 'db/dbcommands.cpp')
-rw-r--r-- | db/dbcommands.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/db/dbcommands.cpp b/db/dbcommands.cpp index 94edf0a..34d00c8 100644 --- a/db/dbcommands.cpp +++ b/db/dbcommands.cpp @@ -1451,17 +1451,18 @@ namespace mongo { BSONElementSet values; shared_ptr<Cursor> cursor = bestGuessCursor(ns.c_str() , query , BSONObj() ); + scoped_ptr<ClientCursor> cc (new ClientCursor(QueryOption_NoCursorTimeout, cursor, ns)); while ( cursor->ok() ){ - if ( cursor->matcher() && ! cursor->matcher()->matchesCurrent( cursor.get() ) ){ - cursor->advance(); - continue; + if ( !cursor->matcher() || cursor->matcher()->matchesCurrent( cursor.get() ) ){ + BSONObj o = cursor->current(); + o.getFieldsDotted( key, values ); } - BSONObj o = cursor->current(); cursor->advance(); - - o.getFieldsDotted( key.c_str(), values ); + + if (!cc->yieldSometimes()) + break; } BSONArrayBuilder b( result.subarrayStart( "values" ) ); |