sql >> Databáze >  >> NoSQL >> MongoDB

Vyberte pole Mongodb pro vrácení vloženého dokumentu v poli

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.



  1. Jak se bezpečně připojit k Heroku Redis přes příkazový řádek?

  2. Porovnejte dvě datová pole v MongoDB

  3. Jaký je přesný rozdíl mezi mongodem a mongos

  4. Existuje způsob, jak umístit veškerou nulovou hodnotu na konec při řazení pomocí mongodb/mongoid?