John -
The 2.6 version of the shell always uses a cursor when you use the aggregate() helper there is no reason to manually construct the command.
Having said that, if you really want to do this manually. The document your are getting back will have the cursor information in it if the server started a cursor. The document should look like:
> db.runCommand( { aggregate : 'usertable', pipeline : [ { '$match' : { "_id" : 1 } } ] , cursor : {} } )
If there had been results the first few documents would have been in the 'firstBatch' array. You can then use getMore requests with the cursor's 'id' (if it is non-zero) to get more documents from the aggregation. I am not sure that the driver has a generic "getMore" request capability but you can probably wrap the cursor's id in the internal iterator class and it will "just work".
I'll state again that all of this is handled by the aggregate() shell helper. I strongly encourage you to just use it.
Rob.