从mongodb循环获取n个文档

时间:2014-01-12 15:05:52

标签: python mongodb pymongo

我有101个文档的集合,我需要迭代它们,一次取10个集合,并在列表中存储特定字段(10个文档)的值。

我试过了:

values = db.find({},{"field":1})
urls = []
count = 0
for value in values:
if(count < 10):
    urls.append(value["field"])
    count = count + 1
    print count
else:
    print urls
    urls = []
    urls.append(value["field"])
    count = 1

它不会获取最后一个值,因为它不会达到条件。任何优雅的方式来做到这一点并纠正这种情况?

2 个答案:

答案 0 :(得分:0)

每次循环重启时,您都会将count重置为0。在循环外移动声明:

count = 0
for value in values:

如果urls已经填写,这将是您唯一的问题。

答案 1 :(得分:0)

据我所知,你有一些数据要组织成10个批次。如果是这样,也许这会有所帮助:

N = 10

values = list(db.find({},{"field":1}))

url_batches = [
    [v['field'] for v in values[i:i+N]]
    for i in xrange(0, len(values), N)
]