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

Os filtros de matriz do Mongodb 3.6.0-rc3 não estão funcionando?


Você está digitando isso no robomongo? Parece que sim! Se for isso não vai funcionar. Leia minha nota sobre Atualizando uma matriz aninhada com o MongoDB, onde digo que isso não funciona em um "shell mais antigo" ou qualquer coisa baseada nele (que robomongo é uma compilação baseada em shell) devido à maneira como os métodos auxiliares do shell são implementados atualmente:

OBSERVAÇÃO Um tanto ironicamente, já que isso é especificado no argumento "options" para .update() e como métodos, a sintaxe é geralmente compatível com todas as versões de driver de lançamento recentes.

No entanto, isso não é verdade para o mongo shell, já que a forma como o método é implementado lá ("ironicamente para compatibilidade com versões anteriores") o arrayFilters argumento não é reconhecido e removido por um método interno que analisa as opções para fornecer "compatibilidade com versões anteriores" com versões anteriores do servidor MongoDB e um .update() "legado" Sintaxe de chamada da API.

Então, se você quiser usar o comando no mongo shell ou outros produtos "baseados em shell" (principalmente Robo 3T), você precisa de uma versão mais recente da ramificação de desenvolvimento ou da versão de produção a partir de 3.6 ou superior.

Portanto, se você quiser "brincar com" o candidato a lançamento, use o pacote mongo shell com essa versão ou simplesmente execute seu código por meio de qualquer driver padrão.