我不知道如何使用mongodb从id范围进行搜索(id表示数据库中的插入顺序)。
示例:我想从元素id 0到元素id 19 - >查找前20个元素
由于我存储了ObjectId,我该如何查找这种搜索?
我的结构:
{“_ id”:ObjectId(“50e9ccb30364a89b9b286f7a”),“dataCriacao”:日期(1357499571496),“email”:“danielp@r7.com”,“nome”:“Daniel”,“version” :0}
我是否必须创建一个单独的ID号码?
谢谢,
丹尼尔
答案 0 :(得分:1)
您可以按_id
排序和过滤,就像您可以使用任何其他字段一样。获得前20名:
db.test.find().sort({_id: 1}).limit(20)
但是,虽然ObjectId
值以其创建的一秒分辨率时间戳开头,但如果记录由多个客户端创建为{{1},则不能保证它们按创建时间严格排序通常在驱动程序端创建(而不是MongoDB服务器集中创建)。
答案 1 :(得分:1)
添加CreatedOn
日期字段并对其进行排序。
对Id
进行排序是一个坏主意,因为:
- 他们不保证是增量的
- 它们不能被用作商业价值
答案 2 :(得分:0)
查找前20个用户(例如):
db.users.find().limit(20)
如果您想在之间进行搜索,例如ObjectId("50ea0918ec661588c2000001")
和ObjectId("50ea0918ec661588c200000c")
:
db.users.find({ _id: { $gt: ObjectId("50ea0918ec661588c2000001"), $lt: ObjectId("50ea0918ec661588c200000c") } })
但是,ObjectId是基于许多字段生成的(请参阅链接)。无法保证它们符合逻辑顺序。