sql >> Database >  >> NoSQL >> MongoDB

Kan meteor mongo driver omgaan met $each en $position operators?

Als u een Meteor-verzameling maakt met new Mongo.Collection('col') je krijgt een Minimongo-instantie terug die niet de native Node MongoDriver is, toch?

Dus sommige methoden werken gewoon niet of worden niet volledig ondersteund.. zoals collection.aggregate

Maar u kunt eenvoudig toegang krijgen tot de native driver via Col.rawCollection() en voer uw query rechtstreeks uit op de native instantie. De native instantie is natuurlijk alleen toegankelijk op de server .

Dus om te doen wat je wilt, heb je verschillende manieren, je kunt bijvoorbeeld eerst de array nemen, deze gebruiken zoals je wilt en

$set: {my_array: sortedArray } Persoonlijk zou ik op deze manier de voorkeur geven omdat je maar één update hoeft uit te voeren in plaats van twee ($pull &$push at $position )

Maar als je het op de $push op $position manier wilt doen.. doe het dan gewoon met de native driver

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

Opmerking:je hebt de Meteor.wrapAsync nodig vanwege de Meteor-synchronisatiestijl, je zou het ook zonder kunnen doen. Collection.rawCollection().update(...)




  1. Mongodb groeperen op veld met $substr

  2. mongo kopiëren van de ene collectie naar de andere (op dezelfde db)

  3. Uitzondering socket time-out in Mongo

  4. Hoe krijg ik alle openstaande taken in de laravel-wachtrij op redis?