Mam problem z nowym sterownikiem MongoDB C# 2.0 i potokiem agregacji.Rozwiń następnie Agregacja grupy w MongoDB C#
Zasadniczo próbuję zwrócić najbardziej popularne elementy w polu tablicy na obiekcie. Typ pola to: IList<string> FavouritePlaceIds { get; set; }
.
Mam następujący MongoDB agregację, która działa zgodnie z oczekiwaniami:
db.users.aggregate([
{ $unwind : "$FavouritePlaceIds" },
{ $group: { "_id": "$FavouritePlaceIds", "count": {$sum: 1}}},
{ $sort : { "count": -1 }}
])
Jednak kwestia teraz próbuje tłumaczyć, że do kodu C# z wykorzystaniem nowego sterownika MongoDB 2.0. Używam na poniższy link w celu uzyskania pomocy z gazociągiem agregacji: http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/crud/reading/#unwind
mam następujące pory dla mojego agregacji rurociągu:
var pipeline = usersCollection.Aggregate()
.Unwind(i => i.FavouritePlaceIds)
.Group(i => i.FavouritePlaceIds, g => new { FavouritePlaceIds = g.Key, Count = g.Count() })
.SortByDescending(i => i.Count);
Kiedy idę do kompilacji tego kodu, otrzymuję następujący komunikat:
'BsonDocument' does not contain a definition for 'FavouritePlaceIds' and no extension method 'FavouritePlaceIds' accepting a first argument of type 'BsonDocument' could be found...
błąd ma miejsce w pierwszym parametrem (i => i.FavouritePlaceIds
) sposobu grupy().
Czytając notatki na link podany w sekcji grupy, wspomina, że:
Because $unwind is a type of projection, you must provide a return type.
Tak, jestem przy założeniu, że nie jestem podając prawidłowy typ zwrotny, dlatego to spodziewa się Obiekt BsonDocument i nie można skompilować.
Jak zatem określić poprawny typ zwrotu, który ma być użyty w metodzie grupy?
Czy muszę ustawić OriginalType i NewResultType na klasę, której pole jest członkiem lub typ pola? – Juzzbott
@Juzzbott zdecydowanie nie jest takim typem pola. Typ 'OrignalType' powinien być typem kolekcji. 'NewResultType' powinien być typem projekcji tworzonej w' Unwind'. Powinien prawdopodobnie działać z tym samym oryginalnym typem. – i3arnon
Klasa 'ApplicationUser' ma pole FavouritePlaceIds. Poniższe składniki zostaną teraz skompilowane, ale otrzymuję inny błąd: '.Unwind (i => i.FavouritePlaceIds)'. Komunikat o błędzie: Nie można przekształcić z postaci szeregowej "List " z BsonType 'String'. –
Juzzbott