FireDAC.Phys.MongoDBWrapper.TMongoCollection.Aggregate
Delphi
function Aggregate(APipeline: TMongoPipeline; AFlags: TMongoQueryFlags = []): IMongoCursor; overload;
function Aggregate(AFlags: TMongoQueryFlags = []): TMongoPipeline; overload;
C++
_di_IMongoCursor __fastcall Aggregate(TMongoPipeline* APipeline, TMongoQueryFlags AFlags = TMongoQueryFlags() )/* overload */;
TMongoPipeline* __fastcall Aggregate(TMongoQueryFlags AFlags = TMongoQueryFlags() )/* overload */;
Contents
Properties
Type | Visibility | Source | Unit | Parent |
---|---|---|---|---|
function | public | FireDAC.Phys.MongoDBWrapper.pas FireDAC.Phys.MongoDBWrapper.hpp |
FireDAC.Phys.MongoDBWrapper | TMongoCollection |
Description
Applies the specified pipeline to the documents of the collection and returns a cursor to access the results.
Aggregate supports two different coding styles.
You can optionally specify a set of query flags.
Example
The following example obtains an aggregation of documents where each document has a zip code as identifier (_id
) and the number of Italian restaurants in that zip code (count
), sorted by the count
field.
MongDB shell:
db.restaurants.aggregate([
{ $match: { cuisine: "Italian" } },
{ $group: { _id: "$address.zipcode", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])
Delphi:
MyCursor := MyCollection.Aggregate
.Match
.Add('cuisine', 'Italian')
.&End
.Group
.Add('_id', '$address.zipcode')
.BeginObject('count')
.Add('$sum', 1)
.EndObject
.&End
.Sort('{ count: -1 }').&End;
C++:
_di_IMongoCursor MyCursor = MyCollection->Aggregate()
->Match()
->Add("cuisine", String("Italian"))
->End()
->Group()
->Add("_id", String("$address.zipcode"))
->BeginObject("count")
->Add("$sum", 1)
->EndObject()
->End()
->Sort("{ count: -1 }")->End()
->Open();