O operador $ é para uso no objeto operador de atualização (2º argumento para
update
), não o seletor de consulta (1º argumento). No seletor de consulta, você deve ser capaz para usar aList.bList.cList._id
, e isso permitiria que aList.$.bList.$.cList
corresponde ao primeiro elemento correspondente da cList
incorporada no operador de atualização. Editar:
Posicional aninhado (
$
) a correspondência de operadores não é suportada atualmente. Este bilhete
mostra a demanda por exatamente esse recurso de muito tempo atrás (2010!), mas aparentemente o código de nível inferior dentro do mongoDB não tornou isso possível. Parece que a 10gen espera obter esse recurso na versão 2.6. Parece que você terá que consultar e atualizar separadamente para conseguir isso com seu esquema atual, ou talvez alterar seu esquema para ser mais simples.