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

Unterstützt Moongoose 3.8.8 den Operator $position?

Dies spielt eigentlich keine Rolle und spielt für eine "Framework" -Implementierung keine Rolle, und es macht mir nichts aus zu erklären, warum.

Jedes einzelne „Framework“ (wie Mongoose, Mongoid, Doctrine, MongoEngine, etc, etc, etc ) baut grundsätzlich auf einer grundlegenden „Treiber“-Implementierung auf, die in den meisten Fällen von den MongoDB-Mitarbeitern selbst entwickelt wurde. Die grundlegende Funktionalität ist also immer vorhanden, auch wenn Sie bis auf eine Ebene "eintauchen" müssen, um diese "nativen" Methoden zu verwenden.

Hier wäre also in diesem Fall das native Verwendungsbeispiel:

List.collection.update(
{},
{ "$push": {
    "list": {
      "$each": [ 1, 2, 3 ],
      "$position": 0 }
    }
},function(err,NumAffected) {
  console.log("done");

});

Beachten Sie die vom Modell verwendete "Erfassungs"-Methode, die die "rohen" Erfassungsdetails vom Treiber erhält. Sie verwenden also seine Methode und nicht irgendeine "verpackte" Methode, die möglicherweise zusätzliche Verarbeitung durchführt.

Der nächste und grundlegendste Grund ist, wenn Sie die Methode und Anwendung der Operatoren, die Sie benötigen, nicht finden können, ist dies eine einfache Tatsache.

Jede einzelne Operation, wie sie von den Methoden in jedem Framework und jeder Basistreibermethode verwendet wird, ist im Wesentlichen ein Aufruf der „runCommand“-Methode in der Basis-API. Da dieser grundlegende Aufruf also überall verfügbar ist (in irgendeiner Form, weil es so sein muss), können Sie alles, was Sie auf der MongoDB-Site beworben finden, mit jeder Sprachimplementierung auf irgendeinem tun Rahmen.

Aber der kurze Aufruf zu Ihrem speziellen Anliegen ist, da dies eigentlich keine Methode ist aufrufen, sondern einfach Teil der übergebenen BSON-Argumente ist, dann gibt es natürlich keine Einschränkung durch einen bestimmten Sprachtreiber, diesen tatsächlich zu verwenden.

Sie können diese neuen Argumente also verwenden, ohne natürlich auf die neueste Version zu aktualisieren. Aber Sie werden wahrscheinlich ein paar nette Methoden dafür bekommen, wenn Sie es tatsächlich tun.