How to hide _id from Aggregation?

mongodb, motordriver, pymongo, tornado-motor

Solution

From mongodb docs

You can $project the results to exclude the `_id` - is this what you mean?

http://docs.mongodb.org/manual/reference/aggregation/#pipeline

Note The _id field is always included by default. You may explicitly exclude _id as follows:

db.article.aggregate(
    { $project : {
        _id : 0 ,
        title : 1 ,
        author : 1
    }}
);

From you're example, the first operation in the pipeline would be to exclude the _id and include the other attribs.

Problem

I've this query: ``` produits = yield motor.Op(db.users.aggregate, [{"$unwind":"$pup"},{"$match":{"pup.spec.np":nomp}}, {"$group":{"_id":"$pup.spec.id","pup":{"$push":"$pup"}}}]) ``` which gives me this result: ``` print produits {u'ok': 1.0, u'result': [{u'_id': None, u'pup': [{u'avt': {u'fto': ..all the results}}]}]} ``` so I can do: ``` prod = produits["result"] [{u'_id': None, u'pup': [{u'avt': {u'fto': ..all the results}}]}] ``` but how can I hide `"_id"` so that I can only get: ``` [{u'pup': [{u'avt': {u'fto': ..all the results}}]}] ``` in a normal query I would simply add something like `{"_id":0}` but here it doesn't work.

Original source