2011-10-09 8 views
5

Quando eseguo sotto funzione JavaScript memorizzato ricevo errori:MongoDB: Errore durante l'esecuzione memorizzato funzione JavaScript

> db.system.js.save({_id:"last_n_users", value: function(n){return db.users.find().sort({created_at:-1}).limit(n)}}) 
> db.eval("last_n_users(10)") 

Ecco gli errori:

{ "value" : "DBQuery: store.users -> undefined" } 

Perché? Mi aiuti per favore?

risposta

10

La funzione find() restituisce un cursore, che non può essere restituito da JavaScript. suggested workaround utilizza toArray() per ottenere un valore di ritorno dell'array.

Esempio ... prima:

> use admin 
switched to db admin 
> db.system.js.save({ _id : "foo", value: function(n){return db.system.indexes.find().limit(n)} })   
> db.eval("foo(3)")                    
{ "value" : "DBQuery: admin.system.indexes -> undefined" } 

proprio come si descrive.
E dopo:

> db.system.js.save({ _id : "foo", value: function(n){return db.system.indexes.find().limit(n).toArray()} }) 
> db.eval("foo(3)")                       
[ 
     { 
       "name" : "_id_", 
       "ns" : "admin.system.users", 
       "key" : { 
         "_id" : 1 
       } 
     }, 
     { 
       "name" : "user_1", 
       "ns" : "admin.system.users", 
       "key" : { 
         "user" : 1 
       }, 
       "unique" : false 
     }, 
     { 
       "name" : "_id_", 
       "ns" : "admin.whee", 
       "key" : { 
         "_id" : 1 
       }, 
       "v" : 0 
     } 
] 
+0

Questo è impressionante. Grazie mille. – Zeck

+0

Prego! Felice potrei aiutare. :) – dampier

Problemi correlati