1

mongo コレクション内の新しいドキュメントをチェックするロング ポーリング スクリプトを作成していますが、ループの過去の繰り返しで変更が行われたかどうかを確認する唯一の方法は、クエリを実行して最後のものを取得することです。ドキュメントの ID を取得し、その ID のタイムスタンプを解析して、最後にリクエストを行ってから残っているタイムスタンプよりも大きいかどうかを確認します。

毎回クエリを作成する必要のない何らかのアプローチや、そのクエリを最速にする方法はありますか?

私は次のようなクエリを考えていました:

db.chat.find().sort({_id:-1}).limit(1);

しかし、それはPHPドライバーを使用しています。

4

2 に答える 2

2

最速の方法は、timestampフィールドにインデックスを作成することです。

Creating index:

db.posts.ensureIndex( { timestamp : 1 } )

Optimizes this query:

db.posts.find().sort( { timestamp : -1 } )

findOne最後のタイムスタンプを 1 つだけ提供します。

お役に立ててうれしいです。

于 2013-01-15T07:03:11.813 に答える
0

@Zagorulkinあなたの提案は、必要なシナリオに役立つはずです。ただし、sort()がfindOne()で機能するとは思わない。

于 2013-01-16T11:56:28.973 に答える