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 回答