Czy możliwe jest wykorzystanie struktury agregacji do grupowania według określonego elementu tablicy?Grupowanie według określonego elementu tablicy ze strukturą agregacji mongo
taka, że z dokumentów takich jak ten:
{
name: 'Russell',
favourite_foods: [
{ name: 'Pizza', type: 'Four Cheeses' },
{ name: 'Burger', type: 'Veggie'}
],
height: 6
}
mogę uzyskać odrębną listę najlepszych ulubionych potraw (czyli żywność o indeksie 0.) Wraz z wysokością najwyższego osoby Top ulubioną potrawę, która jest ?
Coś takiego (chociaż to nie działa jak notacji dostęp dot indeksu tablicy nie wydają się działać w ramach agregacji):
db.people.aggregate([
{ $group : { _id: "$favourite_foods.0.name", max_height: { $max : "$height" } } }
])
Tak, zauważyłem to. Miałem nadzieję, że ktoś wymyślił obejście ... – Russell
nie można wyodrębnić dowolnego elementu według pozycji, zdarza się, że masz sposób na uzyskanie pierwszego lub ostatniego wyniku przez $ unwind i re $ group z pierwszym lub ostatnim operatorem $. –
** Dobra wiadomość **: Problem został ostatecznie rozwiązany za pomocą operatora $ arrayElementAt (https://docs.mongodb.com/manual/reference/operator/aggregation/arrayElemAt/) – joeytwiddle