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.