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

Kan meteor mongo driver håndtere $each og $position operatorer?

Hvis du opretter en Meteor Collection med new Mongo.Collection('col') du får en Minimongo-instans tilbage, som ikke er den oprindelige Node MongoDriver, ikke?

Så nogle metoder virker bare ikke eller understøttes ikke fuldt ud.. f.eks. collection.aggregate

Men du kan nemt få adgang til den oprindelige driver via Col.rawCollection() og udfør din forespørgsel direkte på den oprindelige forekomst. Den oprindelige forekomst er selvfølgelig kun tilgængelig på serveren .

Så for at gøre, hvad du vil, har du flere måder, for eksempel kan du først tage arrayet, gribe det som du vil og

$set: {my_array: sortedArray } Personligt ville jeg foretrække denne måde, fordi du kun skal udføre én opdatering i stedet for to ($pull &$push at $position )

Men hvis du vil gøre det $push på $position måde.. gør det bare med den oprindelige driver

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

Bemærk:Du har brug for Meteor.wrapAsync på grund af Meteor-synkroniseringsstilen, du kan også gøre det uden det. Collection.rawCollection().update(...)




  1. Adgang til variabel ekstern redis pipelining-funktion på Laravel

  2. 'autoIndexID' er ikke en gyldig samlingsmulighed - mongoDB

  3. Integration af Node.js og Backbone.js

  4. ReferenceError:TextEncoder er ikke defineret med mongodb noder