summaryrefslogtreecommitdiff
path: root/jstests/sorti.js
diff options
context:
space:
mode:
authorAaron <aaron@10gen.com>2012-02-20 14:42:47 -0800
committerAaron <aaron@10gen.com>2012-02-24 22:49:15 -0800
commit5021e318a604f7b6b4ad07a3ed24680abfc21f07 (patch)
tree641406e6803a3a284c5b7a29a21ccc6ae5889876 /jstests/sorti.js
parent331fe579b13ccb2205e3e54d40f4dc6c66e782bf (diff)
downloadmongo-5021e318a604f7b6b4ad07a3ed24680abfc21f07.tar.gz
add test that a projection is applied after an in memory sort
Diffstat (limited to 'jstests/sorti.js')
-rw-r--r--jstests/sorti.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/jstests/sorti.js b/jstests/sorti.js
new file mode 100644
index 00000000000..2e5cfe110d7
--- /dev/null
+++ b/jstests/sorti.js
@@ -0,0 +1,25 @@
+// Check that a projection is applied after an in memory sort.
+
+t = db.jstests_sorti;
+t.drop();
+
+t.save( { a:1, b:0 } );
+t.save( { a:3, b:1 } );
+t.save( { a:2, b:2 } );
+t.save( { a:4, b:3 } );
+
+function checkBOrder( query ) {
+ arr = query.toArray();
+ order = [];
+ for( i in arr ) {
+ a = arr[ i ];
+ order.push( a.b );
+ }
+ assert.eq( [ 0, 2, 1, 3 ], order );
+}
+
+checkBOrder( t.find().sort( { a:1 } ) );
+checkBOrder( t.find( {}, { _id:0, b:1 } ).sort( { a:1 } ) );
+t.ensureIndex( { b:1 } );
+checkBOrder( t.find( {}, { _id:0, b:1 } ).sort( { a:1 } ) );
+checkBOrder( t.find( {}, { _id:0, b:1 } ).sort( { a:1 } ).hint( { b:1 } ) );