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

Le pilote meteor mongo peut-il gérer les opérateurs $each et $position ?

Si vous créez une collection Meteor avec new Mongo.Collection('col') vous récupérez une instance Minimongo qui n'est pas le Node MongoDriver natif, n'est-ce pas ?

Ainsi, certaines méthodes ne fonctionnent tout simplement pas ou ne sont pas entièrement prises en charge.. comme collection.aggregate

Mais vous pouvez facilement accéder au pilote natif via Col.rawCollection() et effectuez votre requête directement sur l'instance native. L'instance native n'est bien sûr accessible que sur le serveur .

Donc, pour faire ce que vous voulez, vous avez plusieurs façons, par exemple, vous pouvez d'abord prendre le tableau, le répartir comme vous le souhaitez et

$set: {my_array: sortedArray } Personnellement, je préférerais cette méthode car vous n'avez besoin de faire qu'une seule opération de mise à jour au lieu de deux ($pull &$push at $position )

Mais si vous voulez le faire de la manière $push à $position... faites-le simplement avec le pilote natif

var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
  /* update query goes here */
);

Remarque :Vous avez besoin de Meteor.wrapAsync en raison du style de synchronisation Meteor, vous pouvez également le faire sans. Collection.rawCollection().update(...)