Mongo shell javascript数组扩展

时间:2014-07-31 18:22:46

标签: javascript arrays mongodb shell

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

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

test = [1, 2, 3, 4]
test.fill(0)

无法说TypeError:对象1,2,3没有方法'fill'

1 个答案:

答案 0 :(得分:5)

为什么没有Array.fill()工作?

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

有哪些新的ES5阵列方法?

  

2.4 plus应该有ES5数组扩展

ES5中有nine new Array methodsindexOflastIndexOfeverysomeforEachmapfilterreducereduceRight

您可以在ES5 spec中找到有关可用数组方法的更多信息。

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

如果确实想要使用此功能,则Mozilla Developer Network文档中恰好有reference implementation of Array.fill()。您可以在Map-Reduce函数中嵌入此代码,也可以在system.js中存储server-side JavaScript function

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

扩展mongo shell

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

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