Ruby / Mongoid - コレクション内の値をインクリメントして新しい値を返す方法
概要
かなり古いバージョンの Mongoid を使用する Ruby on Rails コードを更新しています。次のコード行は、コレクション内の最初のドキュメントを取得し、フィールド nextid を 1 だけインクリメントし、新しい値を返します。
調査ID = SurveyId.first.safely.inc(:nextid, 1)
Mongodb をバージョン 6.0.3 に更新しましたが、安全な方法はなくなりました。単に使用する場合:
調査ID = SurveyId.first.inc(:nextid, 1)
それは機能しますが、inc は何も返さず、新しい値が何であるかわかりません。
新しい Mongoid バージョンの同等のコードは何ですか?ありがとう!
解決策
Mongoid の新しいバージョン (7+) の場合:
surveyid = SurveyId.first.inc(nextid: 1).nextid
inc は、操作が成功すると、更新されたオブジェクトを返します。