如何将集合/交集与MongoDB的大结果集一起使用



我有一个函数photos-with-keyword-starting,它使用 monger 从 MongoDB 实例获取给定关键字的照片列表,另一个函数使用set/intersection查找这些照片的子集。

(defn photos-with-keywords-starting [stems]
(apply set/intersection
(map set
(map photos-with-keyword-starting stems))))

以前我认为这工作正常,但由于添加了更多记录,交集无法按预期工作 - 它错过了许多同时具有两个关键字的记录。

我注意到对该函数的调用photos-with-keyword-starting总是返回最多 256 个结果:

=> (count (photos-with-keyword-starting "lisa"))
256

下面是该函数的代码:

(defn photos-with-keyword-starting [stem]
(with-db (q/find {:keywords {$regex (str "^" stem)}})
(q/sort {:datetime 1})))

因此,由于在MongoDB中查找记录的调用不会返回所有记录,如果记录超过256条,因此在指定多个关键字时,我无法获得正确的子集。

如何提高此限制?

如果您可以接受的话,您可以简单地将函数photos-with-keyword-starting中的日期时间转换为例如字符串。

或者,您可以从输出中删除逻辑重复项,例如:

(->> 
-your-result-  
(group-by #(update % :datetime str)) 
(map (comp first val)))

相关内容

  • 没有找到相关文章

最新更新