I have a mongo db script in a js file:
query.js
//conn = new Mongo();
//db = conn.getDB("dbName");
functionFoo = function (arg){
//----process arg
}
also I have an array of args
known as args_array
, (that I fetch from database using mongoid) for which I want to do something like this:
args_array.each do |arg|
//some how call functionFoo(arg) from the query.js file
end
is this possible in rails?
I am able to execute the file from terminal but I want to wrap it in my application so that I can use it from rails console.
I know this old question but in case you still need answer or any one else. This answer works with
gem mongo ~> 2.3
.The key to answer you do not need mongoid in this case - in my case I use it for rails model, so I use mongoid (5.1.0) only to get DB connection
db = Mongoid.default_client.database
- or you can get/create database using mongo gem.To execute javascript on database you need to call
command
methoddb.command({ eval: 'js' })
ordb.command({ eval: 'function(n){return db.projects.find({name: n}).toArray();}', args: ['beskhai'], nolock: true })
To get the result you can call
.documents
db.command(...).documents
, The return is a hash {retval: it will be return of you script, ok: is 1 if success} the return object ofcommand
call is[Mongo::Operation::Result]
https://github.com/mongodb/mongo-ruby-driver/blob/master/lib/mongo/operation/result.rb.I'm using MongoID 6.0.1, and it easy to query everything you want like that:
It not only a function, just every thing you want to do with command. My example is: