Mam kolekcję, która wygląda mniej więcej tak:Zastosowanie ramy agregacja MongoDB do grupy o długości tablicy
{
"_id": "id0",
"name": "...",
"saved_things": [
{ ... },
{ ... },
{ ... },
]
}
{
"_id": "id1",
"name": "...",
"saved_things": [
{ ... },
]
}
{
"_id": "id2",
"name": "...",
"saved_things": [
{ ... },
]
}
etc ...
chcę użyć ramy agregacji MongoDB w celu wystąpienia z wynikiem histogramu, który informuje, ilu użytkowników ma określoną liczbę: saved_things
.
{ "_id": 1, "count": 2 },
{ "_id": 3, "count": 1 }
Ja próbowałem różnych kombinacji funkcji agregujących jak poniżej, ale żaden nie działał poprawnie, na przykład: dla zbioru danych powyżej mogłoby coś takiego powrotu. (Mam wrażenie, że będę o tym bardzo źle.)
collection.aggregate([
{ $unwind: "$saved_things" },
{ $group: "$_id", count: { $sum: 1 } } },
{ $group: "$count", number: { $sum: 1 } } },
{ $sort: { number: -1 } }
], function(err, result) {
console.log(result);
});
Czy to możliwe z kruszywa ramach Mongo lub I byłoby lepiej z mapą funkcji zmniejszyć?
Co masz na myśli mówiąc, że wielu użytkowników ma określoną liczbę subcollectin_ saved_things? Biorąc pod uwagę 'saved_thing', chcesz wiedzieć, którzy użytkownicy mają' saved_things' i ile? Czy to? –
Hmm moje sformułowanie wydaje się być mylące, przepraszam za to! Myślę, że przykładowy wynik najlepiej opisuje to, czego szukam, ale spróbuję opisać to jeszcze raz. Chciałbym uzyskać liczbę obiektów w 'saved_things' dla każdego użytkownika w kolekcji i zsumować częstotliwość tej liczby. Służy do generowania histogramu liczby '' saved_things 'użytkownika (jeśli ma to sens). Daj mi znać, jeśli to nadal będzie mylące. –