new Mongo.Collection('col')
を使用してMeteorコレクションを作成する場合 ネイティブノードMongoDriverではないMinimongoインスタンスが返されますよね?
そのため、collection.aggregate
のように、一部のメソッドが機能しないか、完全にサポートされていません。
ただし、Col.rawCollection()
を介してネイティブドライバーに簡単にアクセスできます。 ネイティブインスタンスで直接クエリを実行します。 もちろん、ネイティブインスタンスにはサーバー上でのみアクセスできます 。
したがって、必要なことを行うには、いくつかの方法があります。たとえば、最初にアレイを取得し、希望どおりに再配置して、
$set: {my_array: sortedArray }
個人的には、2回ではなく1回の更新操作で済むため、この方法をお勧めします($pull
&$push at $position
)
ただし、$pushを$positionの方法で実行したい場合は、ネイティブドライバーを使用して実行してください
var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
/* update query goes here */
);
注:Meteor同期スタイルのためにMeteor.wrapAsyncが必要ですが、それなしでも実行できます。 Collection.rawCollection()。update(...)