diff options
Diffstat (limited to 'jstests/distinct_array1.js')
-rw-r--r-- | jstests/distinct_array1.js | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/jstests/distinct_array1.js b/jstests/distinct_array1.js new file mode 100644 index 00000000000..2f289ad2e79 --- /dev/null +++ b/jstests/distinct_array1.js @@ -0,0 +1,91 @@ +t = db.distinct_array1; +t.drop(); + +t.save( { a : [1,2,3] } ) +t.save( { a : [2,3,4] } ) +t.save( { a : [3,4,5] } ) +t.save( { a : 9 } ) + + +// Without index. +res = t.distinct( "a" ).sort(); +assert.eq( "1,2,3,4,5,9" , res.toString() , "A1" ); + +// Array element 0 without index. +res = t.distinct( "a.0" ).sort(); +assert.eq( "1,2,3" , res.toString() , "A2" ); + +// Array element 1 without index. +res = t.distinct( "a.1" ).sort(); +assert.eq( "2,3,4" , res.toString() , "A3" ); + +// With index. +t.ensureIndex( { a : 1 } ); +res = t.distinct( "a" ).sort(); +assert.eq( "1,2,3,4,5,9" , res.toString() , "A4" ); + +// Array element 0 with index. +res = t.distinct( "a.0" ).sort(); +assert.eq( "1,2,3" , res.toString() , "A5" ); + +// Array element 1 with index. +res = t.distinct( "a.1" ).sort(); +assert.eq( "2,3,4" , res.toString() , "A6" ); + +//t.drop(); + +t.save( { a : [{b:"a"}, {b:"d"}] , c : 12 } ); +t.save( { a : [{b:"b"}, {b:"d"}] , c : 12 } ); +t.save( { a : [{b:"c"}, {b:"e"}] , c : 12 } ); +t.save( { a : [{b:"c"}, {b:"f"}] , c : 12 } ); +t.save( { a : [] , c : 12 } ); +t.save( { a : { b : "z"} , c : 12 } ); + +// Without index. +res = t.distinct( "a.b" ).sort(); +assert.eq( "a,b,c,d,e,f,z" , res.toString() , "B1" ); + +// Array element 0 without index +res = t.distinct( "a.0.b" ).sort(); +assert.eq( "a,b,c" , res.toString() , "B2" ); + +// Array element 1 without index +res = t.distinct( "a.1.b" ).sort(); +assert.eq( "d,e,f" , res.toString() , "B3" ); + +// With index. +t.ensureIndex( { "a.b" : 1 } ); +res = t.distinct( "a.b" ); +res.sort() +assert.eq( "a,b,c,d,e,f,z" , res.toString() , "B4" ); + +// _id as an document containing an array +t.save( { _id : { a : [1,2,3] } } ) +t.save( { _id : { a : [2,3,4] } } ) +t.save( { _id : { a : [3,4,5] } } ) +t.save( { _id : { a : 9 } } ) + +// Without index. +res = t.distinct( "_id.a" ).sort(); +assert.eq( "1,2,3,4,5,9" , res.toString() , "C1" ); + +// Array element 0 without index. +res = t.distinct( "_id.a.0" ).sort(); +assert.eq( "1,2,3" , res.toString() , "C2" ); + +// Array element 1 without index. +res = t.distinct( "_id.a.1" ).sort(); +assert.eq( "2,3,4" , res.toString() , "C3" ); + +// With index. +t.ensureIndex( { "_id.a" : 1 } ); +res = t.distinct( "_id.a" ).sort(); +assert.eq( "1,2,3,4,5,9" , res.toString() , "C4" ); + +// Array element 0 with index. +res = t.distinct( "_id.a.0" ).sort(); +assert.eq( "1,2,3" , res.toString() , "C5" ); + +// Array element 1 with index. +res = t.distinct( "_id.a.1" ).sort(); +assert.eq( "2,3,4" , res.toString() , "C6" ); |