在 Rails 控制器中执行原始 MongoDB 查询

Huy*_*Huy 5 ruby ruby-on-rails mongodb ruby-on-rails-3 mongoid3

我有以下原始 mongo 查询,我想直接在 Rails 控制器中执行:

 db.user_places.update({place_id: destroy_model.id}, {$set: {place_id: keep_model.id}}, false, true)
Run Code Online (Sandbox Code Playgroud)

对于续集,我用来ActiveRecord::Base.connection.execute(sql)执行我的 sql 查询。

使用 MongoDB/mongoid gem 执行此操作的等效方法是什么?我尝试按照如何直接在 Ruby 中触发原始 MongoDB 查询,但我没有使用 MongoMapper。

谢谢。

编辑:我对这个问题的解决方案是从 Mongoid 文档中运行以下命令:

UserPlace.where(place_id: destroy_model.id).update_all(place_id: keep_model.id)

这将生成上面的原始 mongo 查询并以 ActiveRecord 方式执行它。

Huy*_*Huy 0

我找到了一种方法,无需与 Mongo 控制台建立连接。使用 mongoid,您只需使用 update_all 即可生成相同的查询。