MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Les filtres de tableau Mongodb 3.6.0-rc3 ne fonctionnent pas?

Est-ce que vous tapez ceci dans robomongo ? Ça y ressemble ! Si c'est le cas, cela ne fonctionnera pas. Lisez ma note sur la mise à jour d'un tableau imbriqué avec MongoDB où je dis que cela ne fonctionne pas dans un "ancien shell" ou quoi que ce soit basé sur celui-ci (dont robomongo est une construction basée sur un shell) en raison de la façon dont les méthodes d'assistance du shell sont actuellement implémentées :

REMARQUE Un peu ironiquement, puisque cela est spécifié dans l'argument "options" pour .update() et comme les méthodes, la syntaxe est généralement compatible avec toutes les versions récentes du pilote.

Cependant, ce n'est pas le cas du mongo shell, puisque la façon dont la méthode y est implémentée ("ironiquement pour la compatibilité ascendante") le arrayFilters l'argument n'est pas reconnu et supprimé par une méthode interne qui analyse les options afin de fournir une "compatibilité descendante" avec les versions antérieures du serveur MongoDB et un "héritage" .update() Syntaxe d'appel API.

Donc, si vous voulez utiliser la commande dans le mongo shell ou d'autres produits "à base de shell" (notamment Robo 3T), vous avez besoin d'une dernière version de la branche de développement ou de la version de production à partir de 3.6 ou supérieure.

Donc, si vous voulez "jouer avec" la release candidate, utilisez soit le mongo fourni shell avec cette version ou exécutez simplement votre code via n'importe quel pilote standard.