pymongo:可以使用next()和prev()迭代结果吗?

0 投票
1 回答
2317 浏览
提问于 2025-04-16 12:00

我有一个数据库,其中有一个名为“id”的列,类型是整数。我使用以下代码:

records = config.gSupei1Collection.find().sort([("id",pymongo.DESCENDING)])

来获取数据游标,然后我用

record = records[0]

来获取最大的ID记录。

我想知道在获取到'record'之后,能不能用record.next()和record.prev()来获取与这个记录相邻的记录?我找不到相关的文档。

1 个回答

1

你可以循环处理记录。这里的记录是一个实际的文档(就像一个字典),而不是一个迭代器,但结果是可以迭代的。

你可以这样做:

for i, d in enumerate(records):
    print i, d

或者,如果你想把返回的记录当作迭代器使用,可以这样做:

n = records.next()

或者为了将来的兼容性:

n = next(records)

记录是一个迭代器。每当你看到可以循环的东西,它就是一个可迭代的对象,你可以直接调用 next()rewind()。不过要小心,调用 rewind() 会重新向数据库服务器发送相同的查询。

顺便说一下,查看某个东西是什么类型的最简单方法是在解释器中试运行你的程序,然后你可以输入 >> help(records) 来查看相关文档。

撰写回答