È possibile utilizzare il framework di aggregazione per raggruppare un elemento specifico di un array?Raggruppa per elemento specifico dell'array con il framework di aggregazione di mongo
tale che, con documenti come questo:
{
name: 'Russell',
favourite_foods: [
{ name: 'Pizza', type: 'Four Cheeses' },
{ name: 'Burger', type: 'Veggie'}
],
height: 6
}
ho potuto ottenere una lista distinta di cibi preferiti top (cioè alimenti a indice 0.) Insieme con l'altezza della persona più alta che è cibo di alta preferito che è ?
Qualcosa di simile (anche se non funziona come l'indice di matrice accesso notazione non sembra funzionare nel quadro di aggregazione):
db.people.aggregate([
{ $group : { _id: "$favourite_foods.0.name", max_height: { $max : "$height" } } }
])
Sì, l'ho notato. Ho sperato che qualcuno avesse inventato una soluzione ... – Russell
non puoi estrarre un elemento arbitrario per posizione, ti capita di avere un modo per ottenere il primo o l'ultimo tramite $ unwind e re $ group con $ first o $ last operator. –
** Buone notizie **: il problema è stato risolto con [l'operatore $ arrayElementAt] (https://docs.mongodb.com/manual/reference/operator/aggregation/arrayElemAt/) – joeytwiddle