33

私はこのクエリを持っています:

produits = yield motor.Op(db.users.aggregate, [{"$unwind":"$pup"},{"$match":{"pup.spec.np":nomp}}, {"$group":{"_id":"$pup.spec.id","pup":{"$push":"$pup"}}}])

これにより、次の結果が得られます。

print produits

{u'ok': 1.0, u'result': [{u'_id': None, u'pup': [{u'avt': {u'fto': ..all the results}}]}]}

だから私はできる:

prod = produits["result"]

[{u'_id': None, u'pup': [{u'avt': {u'fto': ..all the results}}]}]

しかし、どう"_id"すれば取得できるように非表示にできますか:

[{u'pup': [{u'avt': {u'fto': ..all the results}}]}]

通常のクエリでは、次のようなものを追加するだけです{"_id":0}が、ここでは機能しません。

4

4 に答える 4

-1

これは mongoWay で行う正確な方法ではありませんが、このファクトリを使用して、_id 以外のすべてを含むオブジェクトを生成できます。

/**
 * Factory that returns a $project object that excludes the _id property https://docs.mongodb.com/v3.0/reference/operator/aggregation/project/ 
 * @params {String} variable list of properties to be included  
 * @return {Object} $project object including all the properties but _id
 */
function includeFactory(/* properties */){
    var included = { "_id": 0 };
    Array.prototype.slice.call(arguments).forEach(function(include){
        included[include] = true
    })

    return { "$project": included }
}

次に、次のように使用します。

cities.aggregate(
{ "$group": { "_id": null, "max": { "$max": "$age" }, "min": { "$min": "$age" }, "average": { "$avg": "$age" }, "total": { "$sum": "$count" } } },
        includeFactory('max','min','average','total') 
)
于 2016-05-11T16:58:52.033 に答える