Jeśli utworzysz kolekcję meteorów za pomocą new Mongo.Collection('col')
otrzymujesz z powrotem instancję Minimongo, która nie jest natywnym Node MongoDriver, prawda?
Więc niektóre metody po prostu nie działają lub nie są w pełni obsługiwane... jak collection.aggregate
Ale możesz łatwo uzyskać dostęp do natywnego sterownika przez Col.rawCollection()
i wykonaj zapytanie bezpośrednio w instancji natywnej. Oczywiście instancja natywna jest dostępna tylko na serwerze .
Aby zrobić to, co chcesz, masz kilka sposobów, na przykład możesz najpierw wziąć tablicę, ustawić ją tak, jak chcesz i
$set: {my_array: sortedArray }
Osobiście wolałbym ten sposób, ponieważ musisz wykonać tylko jedną operację aktualizacji zamiast dwóch ($pull
&$push at $position
)
Ale jeśli chcesz to zrobić w sposób $push at $position .. po prostu zrób to z natywnym sterownikiem
var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
/* update query goes here */
);
Uwaga:potrzebujesz Meteor.wrapAsync ze względu na styl synchronizacji Meteor, możesz to zrobić również bez niego. Kolekcja.rawCollection().update(...)