Perl driver and aggregation sorting

From: JohnM <john@xxxxxxxxxxx>
To: mongodb-user <mongodb-user@xxxxxxxxxxxxxxxx>
Date: Tue, 10 May 2016 10:12:55 -0700 (PDT)
Why ads?
Hello,
Having a bit of trouble getting the sort to work on an aggregation query.  
I have a few documents(only 3 or 4 hundred) that have a group name taken 
from a substring of what precedes the first dot in the FQDN of the server.  
There can be up to 5 servers in each group.

in the shell I can run:
db.Hosts.find( { "Group Name" :{$exists: true}}, { _id:0, "Group Name":1 } 
).sort( { "Group Name": 1 } );
{ "Group Name" : "ambler" }
{ "Group Name" : "ambler" }
{ "Group Name" : "ambler" }
{ "Group Name" : "ambler" }
{ "Group Name" : "ambler" }
{ "Group Name" : "anaktuvuk" }
{ "Group Name" : "anaktuvuk" }
{ "Group Name" : "anaktuvuk" }
{ "Group Name" : "anaktuvuk" }
{ "Group Name" : "anvik" }
{ "Group Name" : "anvik" }
{ "Group Name" : "anvik" }
{ "Group Name" : "anvik" }
{ "Group Name" : "atqasuk" }
{ "Group Name" : "atqasuk" }
{ "Group Name" : "atqasuk" }
{ "Group Name" : "atqasuk" }
{ "Group Name" : "atqasuk" }
{ "Group Name" : "bethel1" }
{ "Group Name" : "bethel1" }
{ "Group Name" : "bethel1" }
{ "Group Name" : "bethel1" }
{ "Group Name" : "bethel1" }
{ "Group Name" : "bethel3" }
{ "Group Name" : "buckland" }
{ "Group Name" : "buckland" }
{ "Group Name" : "buckland" }
{ "Group Name" : "buckland" }

And the results are as expected.
When I move over to the perl I am writing and try to aggregate all the info 
about each of the hosts in each group, I get all the info I want but the 
sort is off so that the groups are not presented in alphabetical order as 
they are in the above simple shell query.
This is my Perl query:
my $all = $coll->aggregate( [ { "\$sort" => { "Group Name" => -1 } }, { 
"\$group" => { _id => "\$Group Name", SERVER => { "\$push" => 
"\$HostName"}, TYPE => { "\$push" => "\$Type" } } } ] );

I then run through the results as such ( I actually do the same for each of 
the 4 possible servers that could be in the group). I also use a count var 
to number each group.

while (my @a = keys %$dts ) {

 if ( defined $dts->{ '_id' } ) {
   $loc =  $dts->{ '_id' };
   }

  if ( defined $dts->{ 'SERVER'}[0] ) {
   $type = $dts->{'TYPE'}[0];
     if ( $type eq "DM" ) {
         $dm = $dts->{ 'SERVER'}[0];
      } elsif ( $type eq "TCP" ) {
         $tcp = $dts->{ 'SERVER'}[0];
      } elsif ( $type eq "DC" ) {
         $dc = $dts->{ 'SERVER'}[0];
      } elsif ( $type eq "CDR" ) {
         $cdr = $dts->{ 'SERVER'}[0];
      } elsif ( $type eq "HOST" ) {
         $host = $dts->{ 'SERVER'}[0];
      }
   } 


as I said the query brings back all the correct info but not in the correct 
order.  Example of grouping order:
12      elim    
13      golovin 
14      holycross       
15      dillingham      
16      ptheiden        
17      whitemountain   
18      ptheiden_rtr1   
19      stpaul  
20      egegik  
21      manley
22      savoong
23      yakutat 
24      stuyahok        
25      shageluk        
26      perryville      
27      ksalmon 
28      shungnak        
29      ftyukon 
30      stebbins        
31      pilotpt 
32      anaktuvuk

Any pointers to what I may be doing wrong?

Thanks,
JohnM

Running on CentOS 6.7

[kickstart info]$ perl -v

This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi
installed via yum or as OS initial install (it was a while ago, been to 
sleep since then)


Driver version
MongoDB-v1.2.3  installed via cpan (with some mucking about due to 
conflicts and dependencies not fully meet by initial cpan install)





-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: https://docs.mongodb.org/manual/support/
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/bf5aadfd-eb80-430c-9f3d-1eba71bc1feb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Why ads?