Files
mongo/jstests/aggregation/bugs/server6120.js
Mathias Stearn 061a086641 SERVER-10165 aggregate() shell helper now returns a cursor
The actual change is in src/mongo/shell/collection.js with the remaining changes
to adjust tests to the new api.

The "ideal" arguments are now an array of pipeline ops and an optional object
with extra top-level options for the command (such as {explain: true}. For
backwards compatibility, we still support the varargs style where each argument
is a pipeline stage, but there is no way to specify extra parameters in this
mode.
2013-10-08 17:35:02 -04:00

44 lines
1.1 KiB
JavaScript

// Value::coerceToBool() is consistent with BSONElement::trueValue(). SERVER-6120
t = db.jstests_aggregation_server6120;
t.drop();
t.save( {object: {a:1}} );
function coerceToBool( value ) {
return t.aggregate( { $project:{ boolValue:{ $and:[ value ] } } } ).toArray()[ 0 ].boolValue;
}
function assertBoolValue( expectedBool, value ) {
assert.eq( expectedBool, coerceToBool( value ) );
}
// Bool type.
assertBoolValue( false, false );
assertBoolValue( true, true );
// Numeric types.
assertBoolValue( false, NumberLong( 0 ) );
assertBoolValue( true, NumberLong( 1 ) );
assertBoolValue( false, NumberInt( 0 ) );
assertBoolValue( true, NumberInt( 1 ) );
assertBoolValue( false, 0.0 );
assertBoolValue( true, 1.0 );
// Always false types.
assertBoolValue( false, null );
// Always true types.
assertBoolValue( true, '' );
assertBoolValue( true, 'a' );
assertBoolValue( true, "$object" );
assertBoolValue( true, [] );
assertBoolValue( true, [ 1 ] );
assertBoolValue( true, new ObjectId() );
assertBoolValue( true, new Date() );
assertBoolValue( true, /a/ );
assertBoolValue( true, new Timestamp() );
// Missing field.
assertBoolValue( false, '$missingField' );