Ако създадете колекция Meteor с new Mongo.Collection('col')
получавате обратно екземпляр на Minimongo, който не е собственият Node MongoDriver, нали?
Така че някои методи просто не работят или не се поддържат напълно.. като collection.aggregate
Но можете лесно да получите достъп до родния драйвер чрез Col.rawCollection()
и изпълнете вашата заявка директно на естествения екземпляр. Собственият екземпляр е достъпен само на сървъра, разбира се .
Така че, за да направите това, което искате, имате няколко начина, например можете първо да вземете масива, да го подредите както искате и
$set: {my_array: sortedArray }
Лично аз бих предпочел този начин, защото трябва да извършите само една операция за актуализиране вместо две ($pull
&$push at $position
)
Но ако искате да го направите по начина $push at $position.. просто го направете с основния драйвер
var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
/* update query goes here */
);
Забележка:Имате нужда от Meteor.wrapAsync поради стила на синхронизиране на Meteor, можете да го направите и без него. Collection.rawCollection().update(...)