Mongoose: aggregation with $match by "_id.property"

In a mongo (2.4.x) collection with documents with this structure:

db.col.insert({ "_id" : { "owner" : "john" }, "value" : 10 });
db.col.insert({ "_id" : { "owner" : "mary" }, "value" : 20 });

I am using mongoose (3.5.4) and trying to run an aggregation pipeline without success. This works fine from the mongo command line client:

> db.col.aggregate({ $match : { "_id.owner": "john" } });

{ "result" : [ { "_id" : { "owner" : "john" }, "value" : 10 } ], "ok" : 1 }

But it does not work as expected when I use mongoose:

Col.aggregate(
  { $match : { "_id.owner": "john" } },
  function(err, result) {
    console.log("ERR : " + err + " RES : " + JSON.stringify(result));
  }
);

ERR : null RES : []

This is the mongoose Schema I am using:

var Col = new Schema({
  _id: {
    owner: String
  },
  value: Number
});

I have to say that a simple Col.find({ "_id.owner": "john" }) works as expected.

How could I make it work? I can not modify the structure of my documents.

As I workaround I included a $project before the match, but I am still looking for a cleaner solution:

{
  $project: {
    "_id": 0,
    "owner": "$_id.owner",
    "value": 1
  }
}