1. ホーム
  2. mongodb

[解決済み] mongodbの最後のN個のレコードを取得する方法は?

2022-03-16 02:11:02

質問

どこにもこのようなことが書かれていないのですが。デフォルトでは、find()オペレーションは先頭からレコードを取得します。mongodbの最後のN個のレコードを取得するにはどうしたらよいですか?

編集:また、私は、返された結果を逆ではなく、より新しいものから最も新しいものへと並べたい。

解決方法は?

昇順でソートする必要があるのですね。

x"という名前のIDまたは日付フィールドがあると仮定して、次のようにします。

.sort()


db.foo.find().sort({x:1});

1 は昇順(古いものから新しいもの)にソートされ -1 は降順(新しいものから古いもの)に並べ替えられます。

自動作成された _id フィールドには日付が埋め込まれているので、それを使って順序を決めることができます。

db.foo.find().sort({_id:1});

これで、すべてのドキュメントが古いものから新しいものへとソートされて返されます。

自然な順序


を使用することもできます。 自然な順序 前述したように.

db.foo.find().sort({$natural:1});

ここでも 1 または -1 を、希望する順番に変更してください。

.limit()を使用する


最後に、このような広い範囲のクエリを実行する場合は、制限を追加するのがよい方法です。

db.foo.find().sort({_id:1}).limit(50);

または

db.foo.find().sort({$natural:1}).limit(50);