Pokud vytvoříte Meteor Collection s new Mongo.Collection('col')
získáte zpět instanci Minimongo, která není nativním ovladačem Node MongoDriver, že?
Takže některé metody prostě nefungují nebo nejsou plně podporovány... jako collection.aggregate
K nativnímu ovladači však můžete snadno přistupovat pomocí Col.rawCollection()
a proveďte dotaz přímo na nativní instanci. Nativní instance je samozřejmě přístupná pouze na serveru .
Chcete-li tedy dělat, co chcete, máte několik způsobů, například byste mohli nejprve vzít pole, uspořádat jej tak, jak chcete, a
$set: {my_array: sortedArray }
Osobně bych preferoval tento způsob, protože potřebujete provést pouze jednu aktualizaci namísto dvou ($pull
&$push at $position
)
Ale pokud to chcete udělat $push at $position způsobem.. prostě to udělejte s nativním ovladačem
var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
/* update query goes here */
);
Poznámka:Potřebujete Meteor.wrapAsync kvůli stylu synchronizace Meteor, můžete to udělat i bez něj. Collection.rawCollection().update(...)