0

我不知道如何使用 mongodb 从 id 范围内搜索(id 表示数据库中的插入顺序)。

示例:我想从元素 id 0 查找到元素 id 19 -> 前 20 个元素

由于我正在存储 ObjectId,我如何查找这种搜索?

我的结构:

{“_id”:ObjectId(“50e9ccb30364a89b9b286f7a”),“dataCriacao”:日期(1357499571496),“电子邮件”:“danielp@r7.com”,“nome”:“丹尼尔”,“版本”:0}

我必须创建一个单独的身份证号码吗?

谢谢,

丹尼尔

4

3 回答 3

1

You can sort and filter by _id just like you can with any other field. To get the first 20:

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

However, while ObjectId values begin with a one-second resolution timestamp of their creation, that doesn't guarantee they're strictly ordered by creation time if the records are created by multiple clients as ObjectIds are generally created driver-side (as opposed to centrally by the MongoDB server).

于 2013-01-07T01:33:54.873 回答
1

添加一个CreatedOn日期字段并对其进行排序。

对 an 进行排序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 回答