2

データのコレクションがあり、挿入時間で並べ替えたいと考えています。挿入時間を格納する追加のフィールドはありません。しかし、私が見つけたように、この時間は Id から取得できます。

私はこのコードを試しました:

return bookmarks.find({}, {sort: {_id.getTimestamp(): 1}, limit: 10});

また

return bookmarks.find({}, {sort: {ObjectId(_id).getTimestamp(): 1}, limit: 10});

しかし、エラーメッセージが表示されます:

=> Your application has errors. Waiting for file change.

id フィールドのみを使用して挿入日時でコレクションをソートする方法はありますか?

4

2 に答える 2

2

現時点では、MongoDB を使用していても、Meteor を使用することはできません。meteor で作成された ObjectID にはタイムスタンプがありません。http://docs.meteor.com/#collection_object_idを参照してください

この理由は、クライアント側のコードがコードを挿入でき、サーバーに遅れて到着する可能性があるためです。したがって、ObjectID のタイムスタンプ部分が正確であるという保証はありません。待ち時間に加えて、クライアント側の日付が使用されます。つまり、日付がずれていると、誤ったデータが取得されます。これが ObjectID を使用する理由だと思いますが、完全にランダムです。

日付でソートしたい場合は、時刻/日付を別々に保存する必要があります。

于 2013-10-04T10:09:44.140 に答える