大家好,
我有一个脚本,使用monger库更新MongoDB数据库中的数据。所有更新都在打开REPL并粘贴代码时执行,但无法用lein run
执行。
相关代码
(ns covid-data-management.core
(:require [oz.core :as oz]
[monger.core :as mg]
[monger.collection :as mc]))
(defonce db (mg/get-db (mg/connect) "covid19"))
(def coll "surveys")
(defn update-symptoms []
(println "In the update-symptoms definitions")
(map (fn [x]
(mc/update db coll {} {"$set" {:symptoms ["symptom1" "symptom2"]}}))))
(defn main [& args]
(update-symptoms))
在REPL中粘贴的代码正好完成了它应该做的:设置新的症状。在用lein run
运行时,控制台打印出字符串"In the update-symptoms definitions",但数据库本身并没有改变。
我怀疑这与Clojure的no-side-effects(无副作用)和lazy(惰性)功能有关,但还没有找到解决方案。任何帮助都欢迎!
谢谢,
j.