0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-12-01 09:32:32 +01:00

Merge branch 'master' of git@github.com:mongodb/mongo

This commit is contained in:
Aaron 2009-05-27 14:09:50 -04:00
commit fff94a80ac
4 changed files with 38 additions and 3 deletions

View File

@ -563,11 +563,11 @@ namespace mongo {
BSONObj temp = b.done();
where->scope->setObject( "obj" , &temp );
}*/
int err = where->scope->invoke( where->func , BSONObj() );
int err = where->scope->invoke( where->func , BSONObj() , 1000 * 60 );
if ( err == -3 ) { // INVOKE_ERROR
stringstream ss;
ss << "error on invocation of $where function:\n"
<< where->scope->getString( "error" );
<< where->scope->getError();
uassert(ss.str(), false);
return false;
} else if ( err != 0 ) { // ! INVOKE_SUCCESS

View File

@ -3,7 +3,7 @@
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = MongoDB
PROJECT_NUMBER = 0.9.1
PROJECT_NUMBER = 0.9.2
OUTPUT_DIRECTORY = docs
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English

23
jstests/count2.js Normal file
View File

@ -0,0 +1,23 @@
t = db.count2;
t.drop();
for ( var i=0; i<1000; i++ ){
t.save( { num : i , m : i % 20 } );
}
assert.eq( 1000 , t.count() , "A" )
assert.eq( 1000 , t.find().count() , "B" )
assert.eq( 1000 , t.find().toArray().length , "C" )
assert.eq( 50 , t.find( { m : 5 } ).toArray().length , "D" )
assert.eq( 50 , t.find( { m : 5 } ).count() , "E" )
assert.eq( 40 , t.find( { m : 5 } ).skip( 10 ).toArray().length , "F" )
assert.eq( 50 , t.find( { m : 5 } ).skip( 10 ).count() , "G" )
assert.eq( 40 , t.find( { m : 5 } ).skip( 10 ).countReturn() , "H" )
assert.eq( 20 , t.find( { m : 5 } ).skip( 10 ).limit(20).toArray().length , "I" )
assert.eq( 50 , t.find( { m : 5 } ).skip( 10 ).limit(20).count() , "J" )
assert.eq( 20 , t.find( { m : 5 } ).skip( 10 ).limit(20).countReturn() , "K" )
assert.eq( 5 , t.find( { m : 5 } ).skip( 45 ).limit(20).countReturn() , "L" )

View File

@ -116,6 +116,18 @@ DBQuery.prototype.count = function(){
throw "count failed: " + tojson( res );
}
DBQuery.prototype.countReturn = function(){
var c = this.count();
if ( this._skip )
c = c - this._skip;
if ( this._limit > 0 && this._limit < c )
return this._limit;
return c;
}
/**
* iterative count - only for testing
*/