GridFS в Ruby: как сохранить? - PullRequest
       22

GridFS в Ruby: как сохранить?

4 голосов
/ 05 августа 2010

Есть ли в GridFS upsert?

Например, если я хочу сохранить изображение с указанным _id, а изображение с таким же _id уже существует, я хочу перезаписать (обновить) его.В противном случае вставьте его.

Ответы [ 2 ]

4 голосов
/ 05 августа 2010

Спецификация на самом деле не предназначена для поддержки upserts, так как вы технически модифицируете более одного документа, и, конечно, могут возникнуть непростые условия гонки.Поэтому мы рекомендуем то, что сделал Мэтт: сначала удалить, а потом поставить.

3 голосов
/ 05 августа 2010

Я посмотрел на исходный код Mongo Ruby Gem и нашел это:

# Store a file in the file store. This method is designed only for writing new files;
# if you need to update a given file, first delete it using #Grid#delete.
# ...
def put(data, opts={})

Итак, я сделал это в коде:

grid.delete(id) # if exists  
grid.put(tmp_file.read, :_id => id, :content_type => file_type)

См. Рабочий скрипт sinatra здесь:http://github.com/acani/acani-sinatra/blob/master/acani.rb#L97

...