Let dire che ho della collezione:Finding valore più alto da sotto-array nei documenti
{ _id: 1, Array: [
{ K: "A", V: 8 },
{ K: "B", V: 5 },
{ K: "C", V: 13 } ] }
{ _id: 2, Array: [
{ K: "D", V: 12 },
{ K: "E", V: 14 },
{ K: "F", V: 2 } ] }
Vorrei eseguire una query che restituisce il sub-documento con il più alto "V", quindi in questo caso vorrei avere:
{ _id: 1, Array: [ { K: "E", V: 14 } ] }
o semplicemente:
{ K: "E", V: 14 }
la parte importante è che io voglio l'utilizzo della memoria sul Mong o il server deve essere O (1) (indipendentemente dal numero di documenti che elabora, l'utilizzo della memoria è costante) e voglio solo recuperare quel documento secondario con il valore che mi serve (non voglio scaricare più documenti secondari del necessario).
Il mio approccio preferito sarebbe utilizzare una query di ricerca semplice, ma non sono sicuro che sia possibile. Sospetto che ciò possa essere fatto anche con la struttura di aggregazione (o la mappa di riduzione?), Ma non vediamo come. Non voglio che il risultato venga archiviato in una raccolta temporanea, ma direttamente restituito al mio cliente (come una normale query).
Non si può fare con un ritrovamento, ma si dovrebbe essere in grado di con il quadro di aggregazione. – JohnnyHK
Sono bloccato su come comprimere tutti gli elementi da matrice in un singolo documento secondario. – Flavien
Dai un'occhiata a ['$ unwind'] (http://docs.mongodb.org/manual/reference/aggregation/unwind/#_S_unwind). – JohnnyHK