次のようなクエリがあるとしましょう
Users.find().sort({score: 1}).limit(3)
私はサーバー上で公開します。
したがって、次のようなコードがあります。
Meteor.publish("leaders", function () {
return Users.find().sort({score: 1}).limit(3)
});
ここで、コレクションに何らかの変更 (挿入/更新/削除) があるとしUsers
ます。
そのコレクションに対するすべてのクエリが再度実行されますか? または Meteor は、データベースの変更により実際に結果が変わる可能性のある特定のクエリのみを実行しますか?
たとえば、最初の 3 人のユーザーUsers.find().limit(3)
を返すクエリは、新しい挿入の後でも同じ値を返すため、再実行しても効果はありません。
編集: Meteor が Mongo の oplog を追跡し、それらの変更をクライアントに伝達することを知っているので、リアルタイムで行う方法についての説明を探しているわけではありません。変更によってどのクエリが影響を受けるかを追跡する方法 (または追跡するかどうか) について詳しく説明します。