【发布时间】:2021-07-24 15:24:18
【问题描述】:
在包含 100 个文档的集合中,我想运行以下查询:
collection.find({"$text" : {"$search" : "some_string"})
假设一个合适的“文本”索引已经存在,因此我的问题是:我怎样才能只对最后'n'个文档运行这个查询?
我在网上找到的所有问题都是关于如何获取最后 n 个文档。而我的问题是如何搜索仅在最后 n 个文档上?
更一般地说,我的问题是如何在某个部分运行 mongo 查询,比如 20% 的集合。
我尝试了什么
我正在使用 pymongo,所以我尝试使用 skip() 和 limit() 来获取最后 n 个文档,但我没有找到对上述函数返回的游标执行查询的方法。
@hhsarh's anwser 之后,我尝试了但无济于事
# here's what I tried after initial answers
recents = information_collection.aggregate([
{"$match" : {"$text" : {"$search" : "healthline"}}},
{"$sort" : {"_id" : -1}},
{"$limit" : 1},
])
结果仍然来自整个集合,而不是上述代码尝试的最后一条记录/文档。
最后一个文档的任何字段都不包含“healthline”,因此查询的预期结果应该为空 []。但我得到了一份文件。
请有人告诉我这是怎么可能的
【问题讨论】:
-
有人有更好的答案吗?
标签: mongodb mongodb-query pymongo