2

Rails アプリケーションで Mongoid を使用してfind_and_modifyいますが、検索操作が成功するとすぐに、コマンドを使用してドキュメントを更新できることがわかりました。

Userドキュメント構造の下のコレクションを検討する

  • 名前
  • ポイント

ドキュメントは次のように保存されます

{ "_id" : "51a7420eb09de918204883c4", "name" : "balan", "points" : 1727 }

レコードを取得したらすぐにポイント数を更新するにはどうすればよいですか?以下のようにする方法はありますか?

User.where(id: "51a7420eb09de918204883c4").find_and_modify( "$set" => { points: points + 1 } )

つまり、システムは保存されたポイントを取得し、それを 1 増やして、再度保存する必要があります。

提案してください。

4

2 に答える 2

4

リンクジェームスをありがとう。

解決策を得た

User.where(id: "51a7420eb09de918204883c4").find_and_modify({ "$inc" => { points: 1  } })

mongoid.org/en/mongoid/docs/querying.html に従って – コメントの James Wahlin。

于 2013-05-31T16:24:59.900 に答える
0

ジェームズが言ったように、インクリメントは行くべき道です:

User.where(id: "51a7420eb09de918204883c4").inc(:points, 100)

これにより、指定された ID (または任意のクエリ) を持つすべてのレコードが検索され、ポイントの値が 100 ずつ増加し、再度保存されます。かなり気の利いた。任意の mongoid クエリまたは個々のレコードでも呼び出すことができるためUser.find("some-id").inc(:points, 100)User.first.inc(:points, 100)同様に機能します。

于 2013-05-30T18:50:08.137 に答える