Ja, maar niet zoals je wilt. Als je het volgende doet, krijg je alleen het eerste element van de array terug:
coll.find({_id:'2'}, { 'objects.0': 1})
Wat u echter echt wilt, is iets dat er als volgt uitziet:
coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})
Dat werkt natuurlijk niet in MongoDB.
Kijkend naar uw andere vraag , is dit een van de redenen om het "embedded object" te gebruiken in plaats van de "array of objects". Met "embedded object" kunt u het volgende doen:
coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object
Hiermee kun je alleen de "ingesloten objecten" kiezen die je nodig hebt.
Het ding met MongoDB is dat het bovenliggende document altijd . is gehaald. Query's retourneren documenten op het hoogste niveau. Dit zit ingebakken in de hele architectuur. Zelfs als u slechts een deel van het document aanvraagt, moet de server nog steeds het hele document in het geheugen laden voordat u het gevraagde stuk krijgt.
De enige manier om dit te omzeilen is misschien het nieuwe Aggregation Framework , maar dat is nog niet in de stabiele tak.