MongoDB:执行存储的 JavaScript 函数时出错

标签 mongodb stored-functions querying

当我在存储的 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)")

以下是错误:

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

为什么?请帮帮我?

最佳答案

find() 函数返回一个游标,该游标无法从 JavaScript 返回。 suggested workaround就是使用toArray()来获取一个数组返回值。

示例...之前:

> 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" }

正如你所描述的那样。
之后:

> 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
        }
]

关于MongoDB:执行存储的 JavaScript 函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7700948/

相关文章:

mysql - 如何创建返回不带元音的文本的存储过程

sql - 从 postgreSQL 中的 JSON 数组获取单个元素

node.js - 无法通过 NodeJS 连接到 MongoDB - 在副本集中找不到主错误

Mongodb 是否可以聚合对象?

mongodb - 我如何在 Mongo 上每天和每小时对数据进行分组?

javascript - jQuery:如何将 UTC 中的服务器时间转换为 Web 浏览器的本地时间?

mysql - MySQL 8 和 MySQL 5.7 之间的区别

mysql - 连接同一个表并在mysql查询中获取子文件夹

mongodb - 我们什么时候应该使用聚合管道mongodb?

android - 如何通过 Android 使用 Parse 从数据库中查询