Se crei una collezione di meteoriti con new Mongo.Collection('col')
ottieni un'istanza Minimongo che non è il Node MongoDriver nativo, giusto?
Quindi alcuni metodi semplicemente non funzionano o non sono completamente supportati... come collection.aggregate
Ma puoi accedere facilmente al driver nativo tramite Col.rawCollection()
ed esegui la tua query direttamente sull'istanza nativa. L'istanza nativa è accessibile solo sul server, ovviamente .
Quindi per fare quello che vuoi hai diversi modi, ad esempio potresti prima prendere l'array, riutilizzarlo come vuoi e
$set: {my_array: sortedArray }
Personalmente preferirei così perché devi fare una sola operazione di aggiornamento invece di due ($pull
&$push at $position
)
Ma se vuoi farlo in $push at $position way.. fallo semplicemente con il driver nativo
var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
/* update query goes here */
);
Nota:hai bisogno di Meteor.wrapAsync per via dello stile di sincronizzazione di Meteor, puoi farlo anche senza di esso. Collection.rawCollection().update(...)