我有一个简单的Ruby脚本(没有rails,sinatra等),它使用Mongo gem将记录作为Redis / Resque工作者的一部分插入到我的数据库中。
有时候我不想做新的插入,而是想更新现有记录上的计数器字段。我可以用rails / mysql轻松地做到这一点。使用Mongodb在纯Ruby中执行此操作的最快方法是什么?
谢谢,
版
答案 0 :(得分:2)
MongoDB的Ruby客户端库非常方便易用。因此,要更新MongoDB中的文档,请使用类似的内容:
#!/usr/bin/ruby
require 'mongo'
database = Mongo::Connection.new.db("yourdatabasename")
# get the document
x = database.find({"_id" => "12312132"})
# change the document
x["count"] = (x["count"] || 0) + 1
# update it in mongodb
database["collection"].update("_id" => "thecollectionid", x)
您可能还想查看MongoDB中的manual for updating文档。
答案 1 :(得分:0)
感谢envu的指导,我最终还是坚持了下来。这是一个如何使用Ruby客户端的示例片段:
link_id = @globallinks.update(
{
":url" => "http://somevalue.com"
},
{
'$inc' => {":totalcount" => 1},
'$set' => {":timelastseen" => Time.now}
},
{
:upsert=>true
}
)