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

Como fazer uma consulta nessa estrutura de documento aninhada (MongoDB)?


Eu respondi isso algumas vezes sobre pegar os subdocumentos sozinho da coleção mongo aqui e aqui

Simplesmente não há como fazer isso atualmente. Este é o comportamento da filtragem de documentos embutidos em vários níveis, normalmente o filtro correspondente retornaria o documento inteiro, não os subconjuntos.

Já existem dois problemas pendentes no mongo relacionados a este operador posicional ($) em campos para retornar especificador e Capacidade de usar os dados de um subdocumento cujo conteúdo foi usado para satisfazer uma consulta usando o operador $ . (Por favor, faça o login para votar se você realmente precisava do recurso)

E seu esquema alternativo também não é útil aqui.

então você tem que armazenar cada recurso em um documento separado como este para fazê-lo funcionar da maneira que você queria

recurso 1
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 1',
'some_field' : 'zzz'
}

recurso 2
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 2',
'some_field' : 'zzz'
}

e consultando
db.features.find({'_id':someobjectid})

retornará apenas o recurso específico