2013-07-15 12 views
10

sto cercando di utilizzare il client MongoDB "Robomongo" http://robomongo.org/Robomongo, come utilizzare le funzioni personalizzate?

Funziona bene, ma non riesco a capire come accedere alle funzioni create nella sezione "funzioni" ...

I vuoi mettere alla prova la funzionalità di MapReduce, così ho creato una mappa() e ridurre() funzione, ma quando scrivo sul mio guscio:

db.<name_of_collection>.mapReduce(map, reduce, {out: {inline: 1}}); 

Robomongo dare a me il seguente errore:

ReferenceError: map is not defined (shell):1 

Ho anche provato in questo modo:

db.<collection_name>.mapReduce(db.system.js.map, db.system.js.reduce, {out: {inline: 1}}); 

Ma ancora una volta, qualcosa sembra essere sbagliato ...

uncaught exception: map reduce failed:{ 
    "errmsg" : "exception: JavaScript execution failed: ReferenceError: learn is not defined", 
    "code" : 16722, 
    "ok" : 0 
} 

risposta

19

È possibile accedere a funzioni memorizzate in diversi modi:

1)

db.collection.mapReduce(
    "function() { return map(); }", 
    "function(key, values) { return reduce(key, values); }", 
    {out: {inline: 1}}); 

2)

db.collection.mapReduce(
    function() { return map(); }, 
    function(key, values) { return reduce(key, values); }, 
    {out: {inline: 1}}); 

Si noti che stiamo usando le funzioni ora, non stringhe come in 1)

3)

Se si utilizza MongoDB 2.1 o superiore, si può fare:

db.loadServerScripts(); 
db.collection.mapReduce(
    map, 
    reduce, 
    {out: {inline: 1}});  

Ulteriori su questi: http://docs.mongodb.org/manual/tutorial/store-javascript-function-on-server/

Robomongo utilizzano lo stesso motore che viene utilizzato da shell MongoDB. Le tue domande riguardano MongoDB, non Robomongo.

9

Dopo aver creato una funzione tramite RoboMongo, nel comando di shell testo immettere:

db.loadServerScripts(); 
myFunctionName(); 

e cliccare Execute pulsante nella barra degli strumenti

Problemi correlati