Mongo shell javascript数组扩展

Jak*_*ake 1 javascript arrays shell mongodb

所以我试图在mongodb shell中使用javascript数组扩展(Array.prototype函数),它们似乎没有被定义.我认为这对我来说没问题,但我非常希望在实际的quires(即group)和map-reduce中使用它们.我使用的是mognodb版本2.4.10.它在这里说2.4 plus应该有ES5阵列扩展.他们只是没有壳?

具体来说,填充方法不起作用

test = [1, 2, 3, 4]
test.fill(0)
Run Code Online (Sandbox Code Playgroud)

没有说TypeError:对象1,2,3没有方法'填充'

Ste*_*nie 5

为什么Array.fill()不工作?

Array.fill()是ES6规范的一个提议部分(截至2014年8月仍在实验中),因此在MongoDB 2.4或2.6 mongoshell或服务器端JavaScript中绝对不支持开箱即用.

什么是新的ES5阵列方法?

2.4 plus应该有ES5阵列扩展

九个新的Array方法在ES5: ,indexOf, lastIndexOf,every,some,forEach,map,filter,reducereduceRight.

您可以在ES5规范中找到有关可用阵列方法的更多信息.

有没有使用Array.fill()的解决方法?

如果您真的想要使用此功能,则可能是Mozilla Developer Network文档中的参考实现Array.fill().您可以嵌入在你的代码的map-reduce函数或存储服务器端JavaScript函数system.js适当的.

注意:通常,出于性能原因,不建议在MongoDB中使用服务器端JavaScript.服务器端函数会增加所有服务器端JavaScript上下文的开销,因此如果您只需要对特定或不经常使用的Map-Reduce作业,则可能更好地嵌入代码.

扩展mongoshell

也可以mongo使用以下几种方法之一使用自定义JavaScript函数扩展shell:

  • 将JavaScript代码粘贴到活动的mongoshell会话中.
  • 使用load()加载和评估的JavaScript文件的内容.
  • 保存JavaScript代码~/.mongorc.js以在启动mongoshell 时加载此代码.
  • 使用db.loadServerScripts()加载保存在服务器端在所有的JavaScript函数system.js集合当前数据库.