Questa domanda - Is it possible to get a slice of a slice in Mongo? illustra come ottenere una porzione di una sezione in Mongo. In breve, utilizzare una catena di aggregazione su $unwind
, $skip
, $limit
, $unwind
, $skip
, $limit
e $group
.
La mia domanda è come fare questo su una raccolta di più documenti. Voglio tagliare l'array annidato all'interno di ognuno. Una volta I $unwind
, tuttavia, $skip
e hanno senso solo in base alla numerazione del primo array.
C'è un modo per eseguire questo tipo di pipeline su ciascun documento in una raccolta, piuttosto che sulla raccolta nel suo insieme? È quello che sto cercando di fare nella pipeline di aggregazione? È chiaramente possibile utilizzare Map-Reduce, ma è più lento farlo che eseguire le query n + 1 su $unwind
ogni documento singolarmente.
Modifica
Di seguito è un record di esempio.
{
title: "Text Title"
vtitle: "Text Version Title"
text: [[["Book1, Chapter 1, Line 1", "Book1, Chapter 1, Line 2"],["Book 1, Chapter 2, Line 1"]],[["Book 2, Chapter 1, Line 1]]]
}
Il record qui è il testo di un grande libro, memorizzato come una matrice di profondità 3. Ci possono essere molti diversi vtitle
per lo stesso title
e lo text
può essere abbastanza grande.
Mi piacerebbe selezionare un piccolo pezzetto di testo contenuto, identificato da indici, da ogni libro in una raccolta di molti libri - una porzione di una porzione di ogni singolo documento restituito.
Ad esempio, i parametri di ingresso del [3,3]
tornavano dischi come:
{ "text" : ["Book 4, Chapter 4, Line 1", "Book 4, Chapter 4, Line 2", ...] }
Attualmente, sto trovando che devo eseguire n + 1 query - 1 per ottenere l'elenco dei documenti, e quindi uno con la pipeline di aggregazione per ogni documento. – Laizer
Qual è il tuo esempio attuale? Che ne dici di modificare la tua domanda per mostrare alcuni documenti di esempio e il tuo caso reale che vuoi raggiungere. Questo dà quindi qualcosa a cui rispondere con un esempio piuttosto che solo parole o ipotesi. –
Aggiunto l'esempio sopra. – Laizer