所以我试图在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'
答案 0 :(得分:5)
Array.fill()
是ES6规范的一部分提议(截至2014年8月仍未实验),因此在MongoDB 2.4或2.6 mongo
shell中绝对不支持开箱即用或服务器端JavaScript。
2.4 plus应该有ES5数组扩展
ES5中有nine new Array methods:indexOf
,
lastIndexOf
,every
,some
,forEach
,map
,filter
,reduce
和reduceRight
。
您可以在ES5 spec中找到有关可用数组方法的更多信息。
如果确实想要使用此功能,则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:
mongo
shell会话中。load()
加载和评估JavaScript文件的内容。~/.mongorc.js
,以便在启动mongo
shell时加载此代码。db.loadServerScripts()
加载当前数据库的服务器端system.js
集合中保存的所有JavaScript函数。