MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Il driver meteor mongo può gestire gli operatori $each e $position?

Se crei una collezione di meteoriti con new Mongo.Collection('col') ottieni un'istanza Minimongo che non è il Node MongoDriver nativo, giusto?

Quindi alcuni metodi semplicemente non funzionano o non sono completamente supportati... come collection.aggregate

Ma puoi accedere facilmente al driver nativo tramite Col.rawCollection() ed esegui la tua query direttamente sull'istanza nativa. L'istanza nativa è accessibile solo sul server, ovviamente .

Quindi per fare quello che vuoi hai diversi modi, ad esempio potresti prima prendere l'array, riutilizzarlo come vuoi e

$set: {my_array: sortedArray } Personalmente preferirei così perché devi fare una sola operazione di aggiornamento invece di due ($pull &$push at $position )

Ma se vuoi farlo in $push at $position way.. fallo semplicemente con il driver nativo

var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
  /* update query goes here */
);

Nota:hai bisogno di Meteor.wrapAsync per via dello stile di sincronizzazione di Meteor, puoi farlo anche senza di esso. Collection.rawCollection().update(...)