Jika Anda membuat Koleksi Meteor dengan new Mongo.Collection('col')
Anda mendapatkan kembali instance Minimongo yang bukan asli Node MongoDriver, kan?
Jadi beberapa metode tidak berfungsi atau tidak sepenuhnya didukung.. seperti collection.aggregate
Tetapi Anda dapat dengan mudah mengakses driver asli melalui Col.rawCollection()
dan lakukan kueri Anda langsung pada instance asli. Instance asli hanya dapat diakses di server, tentu saja .
Jadi untuk melakukan apa yang Anda inginkan, Anda memiliki beberapa cara, misalnya Anda dapat mengambil array terlebih dahulu, menggunakannya sesuai keinginan Anda dan
$set: {my_array: sortedArray }
Secara pribadi saya lebih suka cara ini karena Anda hanya perlu melakukan satu operasi pembaruan daripada dua ($pull
&$push at $position
)
Tetapi jika Anda ingin melakukannya dengan cara $push di $position.. lakukan saja dengan driver asli
var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
/* update query goes here */
);
Catatan:Anda memerlukan Meteor.wrapAsync karena gaya sinkronisasi Meteor, Anda juga bisa melakukannya tanpa itu. Collection.rawCollection().update(...)