Als u een Meteor-verzameling maakt met new Mongo.Collection('col')
je krijgt een Minimongo-instantie terug die niet de native Node MongoDriver is, toch?
Dus sommige methoden werken gewoon niet of worden niet volledig ondersteund.. zoals collection.aggregate
Maar u kunt eenvoudig toegang krijgen tot de native driver via Col.rawCollection()
en voer uw query rechtstreeks uit op de native instantie. De native instantie is natuurlijk alleen toegankelijk op de server .
Dus om te doen wat je wilt, heb je verschillende manieren, je kunt bijvoorbeeld eerst de array nemen, deze gebruiken zoals je wilt en
$set: {my_array: sortedArray }
Persoonlijk zou ik op deze manier de voorkeur geven omdat je maar één update hoeft uit te voeren in plaats van twee ($pull
&$push at $position
)
Maar als je het op de $push op $position manier wilt doen.. doe het dan gewoon met de native driver
var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
/* update query goes here */
);
Opmerking:je hebt de Meteor.wrapAsync nodig vanwege de Meteor-synchronisatiestijl, je zou het ook zonder kunnen doen. Collection.rawCollection().update(...)