如何使用来自MongoDB

时间:2018-04-02 12:14:10

标签: clojure jodatime monger

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

因为如果有超过256个,在MongoDB中查找记录的调用不返回所有记录,在指定多个关键字时,我没有得到正确的子集。

如何增加此限制?

1 个答案:

答案 0 :(得分:0)

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

或者,您可以从输出中删除逻辑副本,例如:

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