0

mongodb を使用して ID 範囲から検索する方法がわかりません (ID はデータベースへの挿入順序を表します)。

例: 要素 ID 0 から要素 ID 19 までを調べたい -> 最初の 20 要素

ObjectId を保存しているので、この種の検索を検索するにはどうすればよいですか?

私の構造:

{ "_id" : ObjectId( "50e9ccb30364a89b9b286f7a" ),"dataCriacao" : Date( 1357499571496 ),"email" : "danielp@r7.com","nome" : "Daniel","version" : 0 }

別の ID 番号を作成する必要がありますか?

ありがとう、

ダニエル

4

3 に答える 3

1

_id他のフィールドと同じように、並べ替えとフィルター処理を行うことができます。最初の 20 を取得するには:

db.test.find().sort({_id: 1}).limit(20)

ただし、値は作成時の 1 秒の解決タイムスタンプで始まりますが、レコードが複数のクライアントによって作成された場合、通常はドライバー側で (一元的にObjectIdではなく) 作成されるため、作成時間によって厳密に順序付けられるとは限りません。ObjectIdMongoDB サーバーによって)。

于 2013-01-07T01:33:54.873 に答える
1

CreatedOn日付フィールドを追加し、それを並べ替えます。

次の理由から、 でソートすることIdはお勧めできません。
- 増分であることが保証されていません

于 2013-01-07T01:55:43.247 に答える
0

最初の 20 人のユーザーを検索するには (たとえば):

db.users.find().limit(20)

egとの間で検索したい場合:ObjectId("50ea0918ec661588c2000001")ObjectId("50ea0918ec661588c200000c")

db.users.find({ _id: { $gt: ObjectId("50ea0918ec661588c2000001"), $lt: ObjectId("50ea0918ec661588c200000c") } })

ただし、ObjectIdは多数のフィールドに基づいて生成されます (リンクを参照)。それらが論理的な順序になるという保証はありません。

于 2013-01-07T01:49:39.490 に答える