diff options
author | Antonin Kral <a.kral@bobek.cz> | 2010-08-18 09:26:34 +0200 |
---|---|---|
committer | Antonin Kral <a.kral@bobek.cz> | 2010-08-18 09:26:34 +0200 |
commit | 99da8d4003cd4619c8655f4a9db74e567d458e68 (patch) | |
tree | 7ffe10ec1cd5f0f86be0b7b6f46a935c5f279046 /db/dbcommands.cpp | |
parent | 63f119d2d1a2ed62bc492b427fc498c3c3989149 (diff) | |
parent | 0a9f6162d232e4fb4b70ca07c4a65c0a12173cfc (diff) | |
download | mongodb-99da8d4003cd4619c8655f4a9db74e567d458e68.tar.gz |
Merge commit 'upstream/1.6.1'
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" ) ); |