Я хочу выдвигать и извлекать вещи из стека атомарным способом, используя ruby и mongoDB.
Пуш, который я могу сделать атомарно через следующий пример кода:
collection.update({"_id" => document["_id"]}, {"$push" => {field_name => value}})
Пример кода для pop:
value = collection.update({"_id" => document["_id"]}, {"$pop" => {field_name => -1}})
К сожалению, возвращенное выше значение не является значением, которое было «вытолкнуто» из стека.
Кажется, что это очень полезная функция / функция, и мне трудно поверить, что это невозможно с mongoDB.
Обновление
Для тех, кто ищет полный ответ, вот оно (еще раз спасибо, Кэмерон):
result = collection.find_and_modify({:query => {"_id" => document["_id"]}, :update => {"$pop" => {field_name => -1}}})
return result[field_name][0]