Python 在pymongo中,除了使用类似于内联的javascript之外,还有其他的MapReduce替代方案吗?
我认为在herdoc中编写javascript并将其传递给bson代码类会变得非常肮脏和不可维护。除了这样写,还有别的选择吗?可能在一个单独的javascript文件中,并以某种方式导入它?我的整个脚本都在下面,还有40-50行代码要添加到映射中并减少Python 在pymongo中,除了使用类似于内联的javascript之外,还有其他的MapReduce替代方案吗?,python,mongodb,Python,Mongodb,我认为在herdoc中编写javascript并将其传递给bson代码类会变得非常肮脏和不可维护。除了这样写,还有别的选择吗?可能在一个单独的javascript文件中,并以某种方式导入它?我的整个脚本都在下面,还有40-50行代码要添加到映射中并减少 #!/usr/bin/env from pymongo import * from bson.code import Code mclient = MongoClient('localhost:27017') maindb = mclient[
#!/usr/bin/env
from pymongo import *
from bson.code import Code
mclient = MongoClient('localhost:27017')
maindb = mclient['tester']['articles']
map = Code("""function () {
var obj = {
id: this.id,
timeseries_valid: true,
}
var comment_count=0;
function loopAndSet(timeseries, count){
for (var i = 0; i < timeseries.length; i++) {
if (i[1] < count){
obj.timeseries_valid = false;
}
count = i[1];
}
}
if (this.comment_count_timeseries && this.comment_count_timeseries.length > 1) {
loopAndSet(this.comment_count_timeseries, comment_count);
}
emit(this.id, obj);
}""")
reduce = Code("""function (k, v) { return v[0]; }""")
maindb.map_reduce(map, reduce, "idsValid")
#/usr/bin/env
从pymongo进口*
从bson.code导入代码
mclient=MongoClient('localhost:27017')
maindb=mclient['tester']['articles']
map=代码(“”函数(){
var obj={
id:this.id,
timeseries\u有效:true,
}
var注释计数=0;
函数loopAndSet(时间序列,计数){
对于(var i=0;i1){
loopAndSet(this.comment\u count\u timeseries,comment\u count);
}
emit(this.id,obj);
}""")
reduce=Code(““”函数(k,v){返回v[0];}”“)
maindb.map\u reduce(map,reduce,“idsValid”)
不要看代码本身,而是一个建议:将javascript保存在一些.js文件中,这些文件通过open and read从磁盘加载,然后将变量内容传递给需要它们的python代码。另一种解决方案是,将map和reduce函数保存在mongo本身中,然后根据它们的属性调用map reduces函数names@BlakesSeven关键不在于评估代码。我提到它甚至还没有完成;而是将JS移植到python命令的实现。@Apero谢谢您的评论。如果你能在下面写一个例子。我很乐意接受。有趣的是,我可以指出,如果你真的在这里表达了你想要做的事情,那么在逻辑上,除了运行JavaScript,还有更好的选择。如前所述,这里的代码显然不适用于任何预期目的。这可能不是唯一的例子。因此,有更好的替代品可以帮你省去所有的麻烦。但是,如果你不需要帮助,那么就不要费心回答提出的问题,只要得到一些实际上没有帮助的东西作为回报。@BlakesSeven我有一系列文章文档。每个文档都有一个键['comment\u count\u timeseries'],其值为嵌套数组。每个数组中的第二项是通过api检索文章的注释量。(请不要询问我没有构建的结构)有时api会发送错误数据,例如,注释计数:0注释计数:-100。此映射器函数迭代集合并确定下一个注释时间序列值是否低于上一个注释时间序列值。评论数量不能减少;这将确定这些数据在查看代码本身时是可疑的,但有一个建议:将javascript保存在一些.js文件中,这些文件通过open和read从磁盘加载,然后将变量内容传递给需要它们的python代码。另一种解决方案是,将map和reduce函数保存在mongo本身中,然后根据它们的属性调用map reduces函数names@BlakesSeven关键不在于评估代码。我提到它甚至还没有完成;而是将JS移植到python命令的实现。@Apero谢谢您的评论。如果你能在下面写一个例子。我很乐意接受。有趣的是,我可以指出,如果你真的在这里表达了你想要做的事情,那么在逻辑上,除了运行JavaScript,还有更好的选择。如前所述,这里的代码显然不适用于任何预期目的。这可能不是唯一的例子。因此,有更好的替代品可以帮你省去所有的麻烦。但是,如果你不需要帮助,那么就不要费心回答提出的问题,只要得到一些实际上没有帮助的东西作为回报。@BlakesSeven我有一系列文章文档。每个文档都有一个键['comment\u count\u timeseries'],其值为嵌套数组。每个数组中的第二项是通过api检索文章的注释量。(请不要询问我没有构建的结构)有时api会发送错误数据,例如,注释计数:0注释计数:-100。此映射器函数迭代集合并确定下一个注释时间序列值是否低于上一个注释时间序列值。评论数量不能减少;这将确定此数据可疑