Pymongo忽略我的限制参数

时间:2017-11-26 19:20:26

标签: mongodb jupyter-notebook pymongo

我在Python v3.6.3 Jupyter笔记本中使用Pymongo(v3.5.1)。

问题

即使我限制了我的结果,db.collection.find()仍然在返回之前检索所有结果

我的代码:

for post in posts.find({'subreddit_1':"the_donald"}, limit=2):
    print(post)
    exit

Output from the command db.currentOp()

背景

我从files.pushshift.io导入了Reddit评论数据集(RC_2017-01),并在subreddit字段(subreddit_1)上创建了一个索引。

My collection's format

我的索引

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为这是由于您的查询字词没有索引的集合引起的,如行所示:

planSummary: COLLSCAN

这意味着要回答您的查询,MongoDB必须逐个查看集合中的每个文档。

创建索引以支持您的查询应该有所帮助。您可以通过执行以下命令在mongo shell中创建索引:

db.posts.createIndex({'subreddit_1': 1})

这假设您的收藏集名为posts

请注意,创建该索引仅对您发布的查询有帮助。不同类型的查询可能需要不同的索引。

要了解有关索引如何在MongoDB中工作的更多信息,请查看https://docs.mongodb.com/manual/indexes/

答案 1 :(得分:0)

我认为你需要更改查询,因为在find()方法中,第二个参数是投影。 Find()始终返回游标,限制函数始终适用于游标。

所以语法应该如下:

for post in posts.find({'subreddit_1':"the_donald"})[<start_index>:<end_index>]
print(post)
exit

OR

    for post in posts.find({'subreddit_1':"the_donald"}).limit(2)
print(post)
exit

请阅读doc了解详情