MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb 3.6.0-rc3 Array-Filter funktionieren nicht?

Schreibst du das in Robomongo? Es sieht so aus als ob! Wenn ja, wird es nicht funktionieren. Lesen Sie meinen Hinweis zum Aktualisieren eines verschachtelten Arrays mit MongoDB, in dem ich sage, dass dies in einer "älteren Shell" oder irgendetwas, das darauf basiert (wobei Robomongo ein Shell-basierter Build ist), aufgrund der Art und Weise, wie die Shell-Hilfsmethoden derzeit implementiert sind, nicht funktioniert:

HINWEIS Etwas ironisch, da dies im "options"-Argument für .update() angegeben ist und wie bei Methoden ist die Syntax im Allgemeinen mit allen neueren Treiberversionen kompatibel.

Dies gilt jedoch nicht für den mongo Shell, da die Art und Weise, wie die Methode dort implementiert ist ( "ironischerweise aus Gründen der Abwärtskompatibilität"), die arrayFilters -Argument wird nicht erkannt und von einer internen Methode entfernt, die die Optionen parst, um „Abwärtskompatibilität“ mit früheren MongoDB-Serverversionen und einem „alten“ .update() bereitzustellen API-Aufrufsyntax.

Wenn Sie also den Befehl in der mongo verwenden möchten Shell oder andere "Shell-basierte" Produkte (insbesondere Robo 3T ) benötigen Sie eine neueste Version entweder aus dem Entwicklungszweig oder eine Produktionsversion ab 3.6 oder höher.

Wenn Sie also mit dem Release Candidate "spielen" möchten, verwenden Sie entweder das mitgelieferte mongo Shell mit dieser Version oder führen Sie Ihren Code einfach über einen beliebigen Standardtreiber aus.