如何使用monger和Clojure将文档添加到mongodb?

时间:2013-01-28 14:49:40

标签: mongodb clojure monger

我之前从未使用过MongoDb,也没有使用过Monger。我正在开发一个Clojure应用程序。我只是希望能够添加一个文档,作为一个upsert。这是我的一些代码:

(defn convert-data-to-be-persisted [session-data]
  (convert/to-db-object session-data))

(defn persist-data-to-database [converted-document-to-persist]
  (mc/update "timeout_discovery" {:sessions converted-document-to-persist} {} :upsert true))

我正在使用monger:

http://clojuremongodb.info/

我的println和timbre / spy语句正在将此数据打印到终端输出:

在persist-data-to-database中:{" serverUsed" :" /127.0.0.1:27017" ," updatedExisting" :false," upserted" :{" $ oid" :" 510680444077296acfa67d6b"}," n" :1," connectionId" :4,"错误" :null," ok" :1.0}

如果我在命令行登录MongoDb,似乎该集合仍为空:

db.timeout_discovery.find() {" _id" :ObjectId(" 51017c5fa86c7bcc3d423c4d")," timeout" :"发现" }

有一个文件,但它没有任何内容,除了"超时"和"发现"。

我在这里试图弄清楚要做什么,但我尝试的每一个变化都失败了:

http://clojuremongodb.info/articles/updating.html

这一行:

(convert/to-db-object session-data))

返回此文档(但我在这里缩短它,因为原始版本很长,带有更多您在此处看到的HTML):

在get-data-be-persisted中要保留的文件是:{" e6e20a2c-cb46-498c-b2f2-743e2b38b917" :{" itinerary-as-string" :" \ n \ t \ n \ t \ t

http://www.super.com/mexico/bars/2012-food-drink-award-nominees-best\&# 34; class = \" fn given-name url \"> 2012 Food&饮酒奖提名者:最佳新啤酒吧

\ n \ t \ t \ t \ t \ n \ n投票现已结束\ n结果更多信息HERESee更多餐厅+酒吧

\ n \ t \ n \ t \ n http://www.super.com/mexico/bars/2012-food-drink-award-nominees-best-new-beer-bar\">http://media。 super.com/images/100131935/150/113/image.jpg\" /> \ n \ n \ n \ t \ n \ t \ t

http://www.super.com/mexico/sex-dating/summer-dates-in-mexico-bars-and-restaurants\" ; class = \" fn given-name url \">夏季日期:墨西哥酒吧和餐馆的食品和饮料日期

\ n \ t \ t \ t \ t

性与性在这些夏季约会

\ n \ n \ n晚餐或在墨西哥热点地区喝酒。如果你想吸引一个痴迷食物的伴侣,那就超越本季的标准晚餐和电影。查看纽约五个以食品和饮料为重点的夏季日期......

\ n \ t \ n \ t \ n http://www.super.com/mexico/sex-dating /summer-dates\">http://media.super.com/images/100453911/150/113/image.jpg\" /> \ n \ n \ n \ t \ n \ t \ t

http://www.super.com/mexico/restaurants/organic\" class = \" fn given-name url \"> Organic

\ n \ t \ t \ t \ t

Food&饮料,美国,亚洲

\ n \ n \ n \ n $ \ n \ n \ n \ n \ n \ n \ n \ n https:// foursquare。 COM /意图/ venue.html \" data-context = \" vcard-Content-Venue-50137 \">保存到foursquare \ n \ n \ n \ n Tribeca fro-yo狂热分子可以满足他们在第二个位置的所有健康渴望这个有机健康食品吧。明亮的外卖店 - 配有木镶板和白绿色的柜台 - 还提供鲜榨果汁和冰沙,...

编辑\ n \ t \ n \ t \ n \ t \ n http://www.super.com/mexico/restaurants/organic\">http://media.super.com/images/100461855/150/113/image.jpg\" /> \ n \ n \ n \ n \ t \ n 275格林威治街(Murray和Warren Sts之间),纽约,10007 \ n \ t \ n \ t \ n \ t \ n \ t \ n \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \避免课程:9美元。 AmEx,Disc,MC,... \ t \ n \ n http://www.super.com/mexico/restaurants/organic\">\n \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t \ t获取信息\ n \ n \ n \ t \ t" ,"用户名" :" whoandwhy@geocities.com" ," created-at" :" 2013-01-28T13:41:53" ," ip-address" :" 10.0.1.53" ," cookie-id" :" timeout-kiosk5903266" ,"问答 - " :{"你感兴趣的是什么" :[":食物和酒吧"],"谁是你和#34; :[":成人"],"什么是你的电子邮件" :" whoandwhy@geocities.com" ,"你在新纽约的时间长了多久?#34; :":两周"}}}

那么,为什么不能保存?

我没有看到终端输出中的任何错误,但是如果有错误,我想有关如何捕获它并查看它的建议。

如果没有错误,我是否只是对MongoDb或monger的语法错误?

1 个答案:

答案 0 :(得分:0)

Monger的作者。您运行此代码的环境是什么?它可能是身份验证 问题。 Monger默认使用“安全”写入关注,因此写入永远不会失败 (就Monger而言,你仍然需要处理异常)。根据服务器响应 你发布了,写的成功就好了(你可以在响应文档中看到“ok”:1.0)。

如果您对功能参数有疑问,请参阅Monger的文档。我强烈建议您从REPL的入门指南开始。