sql >> Base de Datos >  >> NoSQL >> MongoDB

Ejecutar secuencias de comandos mongodb a través de mongoid Rails

Conozco esta vieja pregunta, pero en caso de que aún necesite una respuesta o cualquier otra. Esta respuesta funciona con gem mongo ~> 2.3 .

La clave para responder es que no necesita mongoid en este caso; en mi caso, lo uso para el modelo de rieles, por lo que uso mongoid (5.1.0) solo para obtener la conexión DB db = Mongoid.default_client.database - o puede obtener/crear una base de datos usando mongo gem.

Para ejecutar javascript en la base de datos, debe llamar al command método db.command({ eval: 'js' }) o db.command({ eval: 'function(n){return db.projects.find({name: n}).toArray();}', args: ['beskhai'], nolock: true })

Para obtener el resultado, puede llamar a .documents db.command(...).documents , El retorno es un hash {retval:será el retorno de su script, ok:es 1 si tiene éxito} el objeto de retorno de command la llamada es [Mongo::Operation::Result] https://github.com /mongodb/mongo-ruby-driver/blob/master/lib/mongo/operation/result.rb .