这里的Mongo有点新鲜。我想使用find()返回集合的子集,但是从指定的"起点"。我有一个类似字典的文档列表,我通过sort
和limit
参数按块和字母顺序返回,但它总是从集合的开头开始。
我希望能够添加"以"开头find()方法的参数,例如,如果我查询字母" h"它将返回所有文件但返回的第一个文件是以" h"开头的第一个文件。使用next()最终将返回以" i"," j"," k"等开头的文档。我也无法找到任何用途或黑客来允许" previous()"与next()相反的方法。我想使用" previous()" (或者可以称之为的任何东西),以" g"," f"开头的方式返回文件,一直回到集合的开头。
我吠叫正确的树吗?这似乎是一个非常明显的数据库功能,但我还没有发现任何使用Mongo的例子或其他提及。
答案 0 :(得分:1)
光标的起点只是结果集中的第一个文档,它基于对查询的过滤和排序。
因此,如果您拥有一个包含name
字段的文档集合,则可以使用'h'
运算符来获取名称以$gte
开头的文档开头的文档然后在name
上升序排序:
db.test.find({name: {$gte: 'h'}}).sort({name: 1})
现在,游标只向前移动,所以如果你想向相反的方向前进,你必须使用一个新的查询来翻转事物:
db.test.find({name: {$lt: 'h'}}).sort({name: -1})