MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongodb selecione o campo para retornar o documento incorporado na matriz


Sim, mas não do jeito que você quer. Se você fizer o seguinte, só receberá de volta o primeiro elemento da matriz:
coll.find({_id:'2'}, { 'objects.0': 1})

No entanto, o que você realmente quer é algo parecido com o seguinte:
coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})

Claro, isso não funciona no MongoDB.

Olhando para sua outra pergunta , esse é um dos motivos para usar o "objeto incorporado" em vez do "matriz de objetos". Com "objeto incorporado" você pode fazer o seguinte:
coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object

Isso permite que você escolha apenas os "objetos incorporados" necessários.

O problema com o MongoDB é que o documento pai é sempre buscado. As consultas retornam documentos de nível superior. Isso está embutido em toda a arquitetura. Mesmo se você solicitar apenas uma parte do documento, o servidor ainda terá que carregar o documento inteiro na memória antes de servir a parte solicitada.

A única maneira de contornar isso pode ser o novo Aggregation Framework , mas isso ainda não está na ramificação estável.