MongoDB/Mongolite中用于编写函数的是什么?

3

我现在正在学习mongolite/mongoDB,看到了这个链接:

https://cran.r-project.org/web/packages/mongolite/vignettes/intro.html

里面有这样的代码:

tbl <- m$mapreduce(
  map = "function(){emit({cut:this.cut, color:this.color}, 1)}",
  reduce = "function(id, counts){return Array.sum(counts)}"
)

有人能告诉我这些函数是用什么语言写的吗?我觉得它们不是R函数。


1
这些是MongoDB风格的JavaScript函数。http://docs.mongodb.org/manual/reference/command/mapReduce/#return-the-total-price-per-customer - hrbrmstr
2个回答

1
R语言允许您创建环境,其中存储函数,然后使用$运算符引用这些函数,就像从列表中提取项目一样。因此,m$mapreduce调用了一个R函数,并将该文本发送到数据库引擎:http://docs.mongodb.org/manual/reference/command/mapReduce/ 如果您安装了该软件包并执行help(pac=mongolite),则会看到该软件包具有单个公开的函数mongo,允许任何这些函数调用。然后,您可以通过帮助页面和vignette上的示例进行操作。 (注意:如果您没有首先安装和设置数据库可执行文件,则会收到错误消息。) 如果您在加载mongolite时执行此操作,则会获取在创建mongo函数时定义的环境中的对象列表。
ls(envir=environment(mongo))

在这个环境中有一组对象,看起来它们持有你可能感兴趣的内容:
[14] "mongo_collection_aggregate"       
[15] "mongo_collection_command"         
[16] "mongo_collection_command_simple"  
[17] "mongo_collection_count"           
[18] "mongo_collection_create_index"    
[19] "mongo_collection_distinct"        
[20] "mongo_collection_drop"            
[21] "mongo_collection_drop_index"      
[22] "mongo_collection_find"            
[23] "mongo_collection_find_indexes"    
[24] "mongo_collection_insert_bson"     
[25] "mongo_collection_insert_page"     
[26] "mongo_collection_mapreduce"       
[27] "mongo_collection_name"            
[28] "mongo_collection_new"             
[29] "mongo_collection_remove"          
[30] "mongo_collection_rename"          
[31] "mongo_collection_stats"           
[32] "mongo_collection_update"     

嗯,我好像在环境中找不到这些函数,比如emitArray.sum - eyio
这些似乎是由数据库Javascript引擎解释的。请参阅:http://docs.mongodb.org/manual/reference/command/mapReduce/ - IRTFM

1
mongolite包中的mapreduce函数是用JavaScript编写的。请查看CRAN上的软件包文档以确认(第3页)(指向外部PDF的链接)
mapreduce(map, reduce, query = ’{}’, sort = ’{}’, limit = 0, out = NULL, scope = NULL)

执行一个 MapReduce 查询。map 和 reduce 参数是包含 JavaScript 函数的字符串。将结果存储到集合中而不是返回它们,请将 out 设置为字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接