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

Moongoose 3.8.8 prend-il en charge l'opérateur $position ?

En fait, cela n'a pas d'importance et n'a jamais d'importance pour la mise en œuvre d'un "framework" et cela ne me dérange pas d'expliquer pourquoi.

Chaque "framework" (tel que Mongoose, Mongoid, Doctrine, MongoEngine, etc., etc., etc.) repose essentiellement sur une implémentation de "pilote" de base qui, dans la plupart des cas, a été développée par le personnel de MongoDB lui-même. Ainsi, la fonctionnalité de base est toujours là, même si vous devez "approfondir" jusqu'à un niveau afin d'utiliser ces méthodes "natives".

Voici donc l'exemple d'utilisation native dans ce cas :

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

});

Notez la méthode de "collection" utilisée à partir du modèle, qui obtient les détails de la collection "brute" du pilote. Vous utilisez donc sa méthode et non une méthode "encapsulée" qui peut effectuer un traitement supplémentaire.

La raison suivante et la plus fondamentale est que si vous ne trouvez pas la méthode et l'application des opérateurs dont vous avez besoin, c'est un fait simple.

Chaque opération utilisée par les méthodes dans chaque framework et méthode de pilote de base est essentiellement un appel à la méthode "runCommand" dans l'API de base. Donc, puisque cet appel de base est disponible partout (sous une forme ou une autre, car il doit l'être), vous pouvez faire tout ce que vous trouvez annoncé sur le site MongoDB avec chaque implémentation de langage sur n'importe cadre.

Mais le bref appel à votre demande particulière est, puisqu'il ne s'agit pas réellement d'une méthode call mais fait simplement partie des arguments BSON tels qu'ils sont passés, alors bien sûr il n'y a aucune restriction par un pilote de langage particulier pour l'utiliser réellement.

Vous pouvez donc utiliser ces nouveaux arguments sans bien sûr mettre à jour la version la plus récente. Mais vous obtiendrez probablement de belles méthodes pour le faire si vous le faites réellement.