MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

O driver do meteor mongo pode lidar com os operadores $each e $position?


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(...)