我在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
我从files.pushshift.io导入了Reddit评论数据集(RC_2017-01),并在subreddit字段(subreddit_1)上创建了一个索引。
答案 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了解详情