Mongodb和Ruby gem - 检查记录是否存在

时间:2012-03-18 18:00:34

标签: ruby mongodb

我有一个简单的Ruby脚本(没有rails,sinatra等),它使用Mongo gem将记录作为Redis / Resque工作者的一部分插入到我的数据库中。

有时候我不想做新的插入,而是想更新现有记录上的计数器字段。我可以用rails / mysql轻松地做到这一点。使用Mongodb在纯Ruby中执行此操作的最快方法是什么?

谢谢,

2 个答案:

答案 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
      }
    )  
相关问题