Ano, ale ne tak, jak chcete. Pokud provedete následující, získáte zpět pouze první prvek pole:
coll.find({_id:'2'}, { 'objects.0': 1})
Nicméně to, co opravdu chcete, je něco, co vypadá následovně:
coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})
To samozřejmě v MongoDB ve skutečnosti nefunguje.
Podívejte se na vaši další otázku , to je jeden z důvodů, proč použít "vložený objekt" místo "pole objektů". S "embedded object" můžete provést následující:
coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object
To vám umožní vybrat pouze „vložené objekty“, které potřebujete.
S MongoDB je to tak, že nadřazený dokument je vždy aportováno. Dotazy vracejí dokumenty nejvyšší úrovně. To je zapečeno v celé architektuře. I když požadujete pouze část dokumentu, server stále musí načíst celý dokument do paměti, než vám požadovaný kus naservíruje.
Jediným způsobem, jak to obejít, může být nový Agregační rámec , ale to ještě není ve stabilní větvi.