如何在mongodb中从n到n项

时间:2016-11-13 02:40:41

标签: mongodb

我试图创建一个Android应用程序,在mongodb集合中提取1-10个文档并在列表中显示这些项目,然后当列表到达结尾时我想要拉出11-20个文档mongodb集合,它继续。

def get_all_tips(from_item, max_items):
    db = client.MongoTip
    tips_list = db.tips.find().sort([['_id', -1]]).limit(max_items).skip(from_item)
    if tips_list.count() > 0:
        from bson import json_util
        return json_util.dumps(tips_list, default=json_util.default), response_ok
    else:
        return "Please move along nothing to see here", response_invalid

    pass

但上述代码不按照我的预期方式运行,而是从from_item返回max_items

示例:调用get_all_tips(3,4)

它返回:

  

文件3,文件4,文件5,文件6

我期待:

  

文件3,文件4

1 个答案:

答案 0 :(得分:0)

在您的代码中,您指定了两个参数。

  1. from_item:这是要返回的文档的起始索引
  2. max_items:要返回的项目数
  3. 因此,调用get_all_tips(3,4)将返回从文档3开始的4个文档,这正是正在发生的事情。

    建议的修正:

    1. 如果您希望它返回文档3和4,请调用get_all_tips(3,2),这意味着从3开始最多返回两个文档。
    2. 如果您想在函数中指定开始和结束索引,我建议您进行以下更改:

      def get_all_tips(from_item, to_item):
          if to_item < from_item:
              return "to_item must be greater than from item", bad_request
          db = client.MongoTip
          tips_list = db.tips.find().sort([['_id', -1]]).limit(to_item - from_item).skip(from_item)
      
    3. 话虽如此,我想指出MongoDb文档不建议对大型集合使用skip进行分页。 MongoDb 3.2 cursor.skip