È possibile restituire solo un documento secondario?
Sì, ma non nel modo desiderato. Se fate quanto segue, si otterrà solo indietro il primo elemento della matrice:
coll.find({_id:'2'}, { 'objects.0': 1})
Tuttavia, ciò che si vuole veramente è qualcosa che è simile al seguente:
coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})
Naturalmente, che in realtà non funziona in MongoDB.
Guardando a your other question, questo è uno dei motivi per utilizzare "l'oggetto incorporato" invece della "matrice di oggetti". Con "oggetto incorporato" è possibile effettuare le seguenti operazioni:
coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object
Ciò consente di scegliere solo gli "oggetti incorporati" necessari.
In questo modo non devo selezionare l'intero oggetto genitore ...
La cosa con MongoDB è che il documento genitore è sempre inverosimile. Le query restituiscono documenti di livello superiore. Questo è cotto nell'intera architettura. Anche se richiedi solo una porzione del documento, il server deve comunque caricare l'intero documento in memoria prima di fornirti il pezzo richiesto.
L'unico modo per aggirare questo può essere il nuovo Aggregation Framework, ma che non è ancora nel ramo stabile.
fonte
2012-02-08 23:05:26
Grande, grazie per la spiegazione. –