Mongodb и Ruby gem - Проверьте, существует ли запись - PullRequest
0 голосов
/ 18 марта 2012

У меня есть простой скрипт на Ruby (без rails, sinatra и т. Д.), Который использует гем Mongo для вставки записей в мою БД как часть работника Redis / Resque.

Иногда вместо выполненияЯ хочу обновить поле счетчика в существующей записи.Я могу сделать это достаточно легко с помощью rails / mysql.Какой самый быстрый способ сделать это в чистом Ruby с Mongodb?

Спасибо,

Ed

Ответы [ 2 ]

2 голосов
/ 18 марта 2012

Клиентская библиотека Ruby для MongoDB очень удобна и проста в использовании.Итак, чтобы обновить документ в 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.

0 голосов
/ 18 марта 2012

благодаря указанию envu я пошел с upsert в конце. Вот пример фрагмента использования Ruby-клиента:

    link_id = @globallinks.update(
      {
        ":url" => "http://somevalue.com"
      }, 
      {
        '$inc' => {":totalcount" => 1},
        '$set' => {":timelastseen" => Time.now}
      }, 
      {
        :upsert=>true
      }
    )  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...