我有一个函数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)))