数码资讯
MongoDBeval执行服务器端脚本
在服务器端,我们可以执行Javascript脚本,通过db.eval功能,或在数据库中保存的Javascript脚本,然后调用它在其他数据库命令。 1。db.eval执行服务器端脚本 的db.eval函数可以用来在服务器端执行Javascript脚本mondb。该函数首先传递给Javascript字
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
在服务器端,我们可以执行Javascript脚本,通过db.eval功能,或在数据库中保存的Javascript脚本,然后调用它在其他数据库命令。
1。db.eval执行服务器端脚本
的db.eval函数可以用来在服务器端执行Javascript脚本mondb。该函数首先传递给Javascript字符串的mondb服务器,在服务器上执行,并返回结果。
db.eval可以用来模拟多文档交易:db.eval锁的数据库,然后执行Javascript然后解锁。虽然没有内置的回滚机制,但它可以确保以指定的数字顺序执行一系列操作。
有两种方法可以发送代码、封装函数或不封装,例如:
复制代码代码如下所示:
db.eval(return'refactor;)
db.eval(功能(){ return'refactor;} )
只有当参数传递时,它必须被封装到一个函数中。参数是通过对db.eval二参数和写一个数组。
如:
复制代码代码如下所示:
db.eval(功能(name){ return'hello,' +姓名;}
如果db.eval表达复杂,调试方法是编写调试信息写入日志的日志
如:
复制代码代码如下所示:
db.eval(打印('Hello重构))
So you can find Hello refactor in the log
两。商店的Javascript
每个mondb数据库有一个特殊的集合:system.js,用来存储Javascript变量。这些变量可以在任何mondb的Javascript上下文调用,包括美元的WHERE子句,db.eval电话,MapReduce的工作。插入可以存在于system.js。
如:
复制代码代码如下所示:
Db.system.js.insert({_id X
Db.system.js.insert({_id Y
Db.system.js.insert({_id Z
在全局范围z中的x,y的定义:
db.eval(返回x + y + z;)
system.js可以存储的Javascript代码,这样你可以很容易地定制一些脚本,如用Javascript写日志功能,存储在system.js。
复制代码代码如下所示:
Db.system.js.insert(
{
_id :日志
值:函数(MSG,级别)
{
var级别=调试
水平= levellevel:0;
var现在=新日期();
打印(现在+ +)+级别;
}
}
)
呼叫:
复制代码代码如下所示:
db.eval(日志('refactor博客测试',1))
使用存储Javascript的缺点是,代码将与常规源代码控件和Javascript分开。会被客户搞砸的。
最适合存储javascript的程序是使用javascript函数的程序,所以如果更新,只需要更新这个函数,而不是修改。如果javascript代码使用起来非常冗长乏味,也可以使用javascript存储,这将节省大量的传输时间。
三。安全
对mondb安全应在Javascript代码的执行是。
如:
复制代码代码如下所示:
>功能= 的功能()(){打印(你好,+用户名+ !;}。
如果用户名是用户定义的,你可以使用这样的字符串);db.dropdatabase();打印(',',
代码变成了这个:
复制代码代码如下所示:
>功能= 的功能()(){打印(你好,);db.dropdatabase();打印('!)
为了避免这种情况,限制行动范围。
大多数驱动程序都提供了一种特殊的类型,传递给数据库代码,这是因为代码实际上可以看作是字符串和范围的组合。作用域是保存的变量名和值映射文档。当执行Javascript函数时,映射将成为函数的局部作用域。
1。db.eval执行服务器端脚本
的db.eval函数可以用来在服务器端执行Javascript脚本mondb。该函数首先传递给Javascript字符串的mondb服务器,在服务器上执行,并返回结果。
db.eval可以用来模拟多文档交易:db.eval锁的数据库,然后执行Javascript然后解锁。虽然没有内置的回滚机制,但它可以确保以指定的数字顺序执行一系列操作。
有两种方法可以发送代码、封装函数或不封装,例如:
复制代码代码如下所示:
db.eval(return'refactor;)
db.eval(功能(){ return'refactor;} )
只有当参数传递时,它必须被封装到一个函数中。参数是通过对db.eval二参数和写一个数组。
如:
复制代码代码如下所示:
db.eval(功能(name){ return'hello,' +姓名;}
如果db.eval表达复杂,调试方法是编写调试信息写入日志的日志
如:
复制代码代码如下所示:
db.eval(打印('Hello重构))
So you can find Hello refactor in the log
两。商店的Javascript
每个mondb数据库有一个特殊的集合:system.js,用来存储Javascript变量。这些变量可以在任何mondb的Javascript上下文调用,包括美元的WHERE子句,db.eval电话,MapReduce的工作。插入可以存在于system.js。
如:
复制代码代码如下所示:
Db.system.js.insert({_id X
Db.system.js.insert({_id Y
Db.system.js.insert({_id Z
在全局范围z中的x,y的定义:
db.eval(返回x + y + z;)
system.js可以存储的Javascript代码,这样你可以很容易地定制一些脚本,如用Javascript写日志功能,存储在system.js。
复制代码代码如下所示:
Db.system.js.insert(
{
_id :日志
值:函数(MSG,级别)
{
var级别=调试
水平= levellevel:0;
var现在=新日期();
打印(现在+ +)+级别;
}
}
)
呼叫:
复制代码代码如下所示:
db.eval(日志('refactor博客测试',1))
使用存储Javascript的缺点是,代码将与常规源代码控件和Javascript分开。会被客户搞砸的。
最适合存储javascript的程序是使用javascript函数的程序,所以如果更新,只需要更新这个函数,而不是修改。如果javascript代码使用起来非常冗长乏味,也可以使用javascript存储,这将节省大量的传输时间。
三。安全
对mondb安全应在Javascript代码的执行是。
如:
复制代码代码如下所示:
>功能= 的功能()(){打印(你好,+用户名+ !;}。
如果用户名是用户定义的,你可以使用这样的字符串);db.dropdatabase();打印(',',
代码变成了这个:
复制代码代码如下所示:
>功能= 的功能()(){打印(你好,);db.dropdatabase();打印('!)
为了避免这种情况,限制行动范围。
大多数驱动程序都提供了一种特殊的类型,传递给数据库代码,这是因为代码实际上可以看作是字符串和范围的组合。作用域是保存的变量名和值映射文档。当执行Javascript函数时,映射将成为函数的局部作用域。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。