【问题标题】:MongoDB cursor starting point and previous method? [duplicate]MongoDB游标起点和以前的方法? [复制]
【发布时间】:2015-12-30 04:39:08
【问题描述】:

这里对 Mongo 有点陌生。我想使用 find() 返回一个集合的子集,但是从一个指定的“起点”开始。我有一个类似字典的文档列表,我通过sortlimit 参数以块和字母顺序返回,但它总是从集合的开头开始。

我希望能够在 find() 方法中添加一个“starts with”参数,例如,如果我查询字母“h”,它将返回所有文档,但返回的第一个是第一个以“h”开头的文档。使用 next() 最终会返回以“i”、“j”、“k”等开头的文档。我也找不到任何用途或技巧来允许与 next() 相反的“previous()”方法。我想使用“previous()”(或任何可能的名称)来返回以“g”、“f”开头的文档,一直返回到集合的开头。

我是在正确地吠叫吗?这似乎是数据库的一个非常明显的功能,但我没有找到任何使用 Mongo 的示例或其他提及。

【问题讨论】:

    标签: node.js mongodb meteor nosql


    【解决方案1】:

    光标的起点只是结果集中的第一个文档,它基于查询的过滤和排序。

    因此,如果您有一组带有name 字段的文档,您可以使用$gte 运算符然后按@987654324 升序排序,以获取名称以'h' 开头的文档@:

    db.test.find({name: {$gte: 'h'}}).sort({name: 1})
    

    现在,光标只向前移动,所以如果你想朝相反的方向移动,你必须使用一个新的查询来翻转事物:

    db.test.find({name: {$lt: 'h'}}).sort({name: -1})
    

    【讨论】:

    • 太棒了,我想这就是我需要的。从文档中不清楚光标不能向后移动,这就是为什么缺少“previous()”方法会令人困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多