Se você criar uma coleção de meteoros com
new Mongo.Collection('col')
você recebe de volta uma instância do Minimongo que não é o Node MongoDriver nativo, certo? Portanto, alguns métodos simplesmente não funcionam ou não são totalmente suportados, como
collection.aggregate
Mas você pode acessar facilmente o driver nativo via
Col.rawCollection()
e execute sua consulta diretamente na instância nativa. A instância nativa só é acessível no servidor, é claro . Então, para fazer o que você quer, você tem várias maneiras, por exemplo, você pode primeiro pegar o array, redefini-lo como quiser e
$set: {my_array: sortedArray }
Pessoalmente, eu preferiria assim porque você precisa fazer apenas uma operação de atualização em vez de duas ($pull
&$push at $position
) Mas se você quiser fazer isso da maneira $ push at $ position .. apenas faça isso com o driver nativo
var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
/* update query goes here */
);
Nota:Você precisa do Meteor.wrapAsync por causa do estilo de sincronização do Meteor, você também pode fazer isso sem ele. Collection.rawCollection().update(...)