sql >> Databáze >  >> NoSQL >> MongoDB

Dokáže řidič meteor mongo zvládnout operátory $each a $position?

Pokud vytvoříte Meteor Collection s new Mongo.Collection('col') získáte zpět instanci Minimongo, která není nativním ovladačem Node MongoDriver, že?

Takže některé metody prostě nefungují nebo nejsou plně podporovány... jako collection.aggregate

K nativnímu ovladači však můžete snadno přistupovat pomocí Col.rawCollection() a proveďte dotaz přímo na nativní instanci. Nativní instance je samozřejmě přístupná pouze na serveru .

Chcete-li tedy dělat, co chcete, máte několik způsobů, například byste mohli nejprve vzít pole, uspořádat jej tak, jak chcete, a

$set: {my_array: sortedArray } Osobně bych preferoval tento způsob, protože potřebujete provést pouze jednu aktualizaci namísto dvou ($pull &$push at $position )

Ale pokud to chcete udělat $push at $position způsobem.. prostě to udělejte s nativním ovladačem

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

Poznámka:Potřebujete Meteor.wrapAsync kvůli stylu synchronizace Meteor, můžete to udělat i bez něj. Collection.rawCollection().update(...)




  1. Jak databáze NoSQL fungují na agregovaných funkcích (AVG, SUM atd.)

  2. MongoDB SpiderMonkey nerozumí UTF-8

  3. Dotaz na podpole v documentdb

  4. Sdílení klíč (MongoDB) pro velké množství dokumentů