Sì, ma non come vorresti. Se fai quanto segue, otterrai solo il primo elemento dell'array:
coll.find({_id:'2'}, { 'objects.0': 1})
Tuttavia, quello che vuoi veramente è qualcosa che assomigli al seguente:
coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})
Ovviamente, questo non funziona in MongoDB.
Osservando l'altra tua domanda , questo è uno dei motivi per utilizzare l'"oggetto incorporato" invece dell'"array di oggetti". Con "oggetto incorporato" potresti fare quanto segue:
coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object
Ciò ti consente di selezionare solo gli "oggetti incorporati" di cui hai bisogno.
Il problema con MongoDB è che il documento padre è sempre preso. Le query restituiscono documenti di primo livello. Questo è cotto nell'intera architettura. Anche se richiedi solo una parte del documento, il server deve comunque caricare l'intero documento in memoria prima di servirti il pezzo richiesto.
L'unico modo per aggirare questo problema potrebbe essere il nuovo Aggregation Framework , ma non è ancora nel ramo stabile.