A sequence of data aggregation processes. These can either be given as separate parameters, or as a single array parameter.
Returns the list of documents aggregated by the pipeline. The return value is either a single Bson array value or a MongoCursor (input range) of the requested document type.
Exception if a DB communication error occurred.
Example taken from the MongoDB documentation
import vibe.db.mongo.mongo; void test() { auto db = connectMongoDB("127.0.0.1").getDatabase("test"); auto results = db["coll"].aggregate( ["$match": ["status": "A"]], ["$group": ["_id": Bson("$cust_id"), "total": Bson(["$sum": Bson("$amount")])]], ["$sort": ["total": -1]]); }
The same example, but using an array of arguments with custom options
import vibe.db.mongo.mongo; void test() { auto db = connectMongoDB("127.0.0.1").getDatabase("test"); Bson[] args; args ~= serializeToBson(["$match": ["status": "A"]]); args ~= serializeToBson(["$group": ["_id": Bson("$cust_id"), "total": Bson(["$sum": Bson("$amount")])]]); args ~= serializeToBson(["$sort": ["total": -1]]); AggregateOptions options; options.cursor.batchSize = 10; // pre-fetch the first 10 results auto results = db["coll"].aggregate(args, options); }
Calculates aggregate values for the data in a collection.